通过“Learning C the hard way”学习C,并做一些我自己的练习。我偶然发现了以下问题。
假设我有以下结构:
struct Person {
char name[MAX_INPUT];
int age;
}
在 main() 中,我声明了以下数组:
int main(int argc, char *argv[]) {
struct Person personList[MAX_SIZE];
return 0;
}
现在假设有 2 个函数(main 调用 function1,后者调用 function2)我想将一个人保存在我在 main 函数中声明的数组中,如下所示:
int function2(struct Person *list) {
struct Person *prsn = malloc(sizeof(struct Person));
assert(prsn != NULL); // Why is this line necessary?
// User input code goes here ...
// Now to save the Person created
strcpy(prsn->name, nameInput);
ctzn->age = ageInput;
list = prsn; // list was passed by reference by function1, does main need to pass the array by
// reference to function1 before?
// This is where I get lost:
// I want to increment the array's index, so next time this function is called and a
// new person needs to be saved, it is saved in the correct order in the array (next index)
}
因此,如果我返回我的主要功能并想像这样打印保存在其中的前三个人:
...
int i = 0;
for(i = 0; i < 3; i++) {
printf("%s is %d old", personList[i].name, personList[i].age);
}
...
基本上如何在应用程序中引用数组,同时保持它的持久性。请记住,main 不一定直接调用使用数组的函数。我怀疑有人可能会建议将其声明为全局变量,那么替代方案是什么?双指针?双指针是如何工作的?
感谢您的时间。