C追加到结构的数组
从我对C语言的理解来看,如果你想在函数中永久地改变某些东西,你必须把一个指针作为参数来传递。但是,我有一段代码附加到结构数组中,没有任何指针 在其他一些文件中:C追加到结构的数组,c,function,C,Function,从我对C语言的理解来看,如果你想在函数中永久地改变某些东西,你必须把一个指针作为参数来传递。但是,我有一段代码附加到结构数组中,没有任何指针 在其他一些文件中: extern struct data *information; struct data *information 在另一个文件中: extern struct data *information; struct data *information 在某些功能中: information = malloc(sizeof(da
extern struct data *information;
struct data *information
在另一个文件中:
extern struct data *information;
struct data *information
在某些功能中:
information = malloc(sizeof(data));
最后,有关职能:
void function(int total, bool status){
total++;
char input[30];
printf("Please enter some input...\n>>>");
scanf(" %[^\n]s", input);
//reallocate memory to fit new element
information = realloc(information,sizeof(struct some_struct)*total);
//assign values to struct members
strcpy(information[total-1].description,input);
information[total-1].amount = total;
return;
}
我通过添加一些示例来测试这个函数,并且在打印时它就在那里。我对这一点的理解是错误的,还是注定会发生这种情况?变量
信息
没有在函数内部声明,但您可以访问它。这意味着它被声明为一个全局变量,并且可以从源文件中的任何位置进行访问
如果您在函数中声明了此变量,则需要将其地址传递到函数中才能对其进行修改。全局变量意味着它可用于所有函数,而无需传递到函数。不需要传递全局变量。因此变量不会在函数的本地堆栈上。因此,全局变量(在您的案例信息中)能够通过函数调用保留修改后的值。请发布。
输入
是区域设置。。。什么是information
?您正在使用globals,却忘了提到它。“information是一个结构的全局数组”-然后显示声明。这里的人不是读心术的。你想打印什么?你怎么调用这个函数的?你是如何申报信息的?在不发布最小示例的情况下,如何分析您的问题?因此,只要struct数组声明为全局,我就可以对其进行任何修改(添加/删除/更新),并且它是永久的,这就是您所说的?