因此,根据我对C的理解,如果要在函数内永久更改某些内容,则必须将指针作为参数传递。但是,我有一些代码附加到没有任何指针的结构数组。
在其他文件中:
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;
}
我通过添加一些示例来测试此功能,并且在打印时它就在那里。我对这个错误的理解,还是这意味着发生?
答案 0 :(得分:1)
变量information
未在函数内部声明,但您可以访问它。这意味着它被声明为全局变量,可以从源文件中的任何位置访问。
如果你在一个函数中声明了这个变量,那么你需要将它的地址传递给函数才能修改它。
答案 1 :(得分:1)
全局变量意味着它可用于所有函数而无需传递给函数。无需传递全局变量。因此变量不会出现在函数的本地堆栈中。因此,全局变量(在您的情况下为信息)能够通过函数调用保留修改后的值。