#include<stdio.h> #include<stdlib.h> #define error 0 #define ture 1 struct variable_array { int length_array; int array[0]; }; struct variable_array* variable_array_create(int fisrt_size) { if(fisrt_size <= 0 ) return error; struct variable__array* array; array = (struct variable_array*)malloc(sizeof(struct variable_array)+fisrt_size*sizeof(int)); if(!array) return error; array->length_array = fisrt_size; return array; } struct variable_array* variable_array_change (struct variable__array* array ,int new_size) { if(new_size <= 0)return error; struct variable__array* array = (struct variable_array*)realloc(struct variable_array* array,sizeof(struct variable_array)+fisrt_size*sizeof(int)); array->length_array = new_size; return array; } void variable_array_print(struct variable_array* array) { if(!array)return error; for(int i = 0; i < array->length_array; i++) printf("%d "array->array[i]); puts(" "); } static inline void variable_array_free(struct variable_array*array) { free(array); } int main(void) { struct variable_array* tp,*t; tp = variable_array_create(10); for(int i=0; i<10 ; i++){ tp->array[i]=i+1; } variable_array_print(tp);//查看赋值是否正确 t = variable_array_change(tp,5); if (!t) return error; tp = t; variable_array_print(tp); variable_array_free(tp); return 0; }的错误分析
时间: 2024-03-31 11:37:36 浏览: 27
这是一个使用 C 语言编写的动态数组实现,其中有一些错误:
1. 宏定义应该使用大写字母,例如 #define ERROR 0。
2. 在函数 variable_array_create 中,当传入参数 fisrt_size 小于等于 0 时,应该返回 NULL,而不是返回错误代码 0。
3. 在函数 variable_array_change 中,应该先使用一个新的变量名来接收 realloc 后的地址,而不是直接使用原来的变量名,例如:struct variable__array* new_array = (struct variable_array*)realloc(array,sizeof(struct variable_array)+new_size*sizeof(int));
4. 在函数 variable_array_change 中,当传入参数 new_size 小于等于 0 时,应该返回 NULL,而不是返回错误代码 0。
5. 在函数 variable_array_print 中,应该在 printf 函数中添加逗号,例如:printf("%d ", array->array[i]);
6. 在函数 variable_array_free 中,应该检查参数是否为 NULL,否则可能会导致程序崩溃。
除此之外,还有一些细节问题,例如结构体名称拼写错误、变量名重复等,需要仔细检查和修改。
相关问题
#include <stdio.h> #include <stdlib.h> #define MAXSIZE 100 typedef int ElemType; typedef struct
这段代码是C语言中的头文件引用和一些定义的示例。其中,`#include <stdio.h>`和`#include <stdlib.h>`是用来引入标准库函数的头文件。`stdio.h`包含了输入输出相关的函数,如`printf`和`scanf`;`stdlib.h`包含了一些常用的函数,如内存分配函数`malloc`和随机数生成函数`rand`。
`#define MAXSIZE 100`是一个宏定义,用来定义一个常量`MAXSIZE`,它的值为100。
`typedef int ElemType;`是用来给`int`类型起一个别名`ElemType`,方便在代码中使用。
至于代码中的结构体部分,由于你没有提供完整的代码,所以无法给出具体的解释。但一般来说,结构体用于定义一种自定义的数据类型,可以包含多个不同类型的成员变量。
include <stdio.h>#include <stdlib.h>
这是一个C语言的标准头文件的引用,其中<stdio.h>包含了C语言的输入输出函数,而<stdlib.h>包含了一些通用的工具函数和内存分配函数。这些头文件在C语言中非常常见,几乎每个C程序都会用到它们。下面是一个简单的例子,展示了如何使用这两个头文件。
```c
#include <stdio.h>
#include <stdlib.h>
int main()
{
int num;
char str[100];
printf("Enter an integer: ");
scanf("%d", &num);
printf("You entered %d.\n", num);
printf("Enter a string: ");
scanf("%s", str);
printf("You entered %s.\n", str);
return 0;
}
```
上面的程序使用了<stdio.h>中的printf和scanf函数,以及<stdlib.h>中的exit函数。输入一个整数和一个字符串,然后将它们输出到控制台上。
相关推荐
![text/x-c](https://img-home.csdnimg.cn/images/20210720083646.png)
![application/msword](https://img-home.csdnimg.cn/images/20210720083327.png)
![image/gif](https://img-home.csdnimg.cn/images/20210720083352.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)