Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/66.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C追加到结构的数组_C_Function - Fatal编程技术网

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

从我对C语言的理解来看,如果你想在函数中永久地改变某些东西,你必须把一个指针作为参数来传递。但是,我有一段代码附加到结构数组中,没有任何指针

在其他一些文件中:

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数组声明为全局,我就可以对其进行任何修改(添加/删除/更新),并且它是永久的,这就是您所说的?