C附加到struct数组

时间:2018-04-25 18:41:00

标签: c function

因此,根据我对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;
}

我通过添加一些示例来测试此功能,并且在打印时它就在那里。我对这个错误的理解,还是这意味着发生?

2 个答案:

答案 0 :(得分:1)

变量information未在函数内部声明,但您可以访问它。这意味着它被声明为全局变量,可以从源文件中的任何位置访问。

如果你在一个函数中声明了这个变量,那么你需要将它的地址传递给函数才能修改它。

答案 1 :(得分:1)

全局变量意味着它可用于所有函数而无需传递给函数。无需传递全局变量。因此变量不会出现在函数的本地堆栈中。因此,全局变量(在您的情况下为信息)能够通过函数调用保留修改后的值。