【发布时间】:2016-03-03 06:00:33
【问题描述】:
我有一个应该创建结构并将它们存储在结构数组中的函数。
假设这是我的结构:
struct str {
...
};
该函数采用如下所示的参数:
struct str **ptr
如果我做对了,它是一个指向结构的指针,我应该将此参数设置为指向结构数组的第一个元素,这将是该数组中的第一个结构。
所以,如果参数看起来像这样,这意味着我有一个指向该结构的指针数组,而不是一个结构数组,对吗?
现在我已经声明了指向如下结构的指针数组:
struct str *structures[20];
因为我希望那里有 20 个(指向)结构的存储。
然后我有一个循环为结构分配内存并将它们存储在数组中,如下所示:
struct str *structure;
structure = malloc(sizeof(struct str));
然后我这样填写我想要的结构的参数:
structure->a = 1; structure->b = 2; .........
我将它存储在这样的数组中:
structures[n] = structure;
我确保它存储在数组中我想要的位置,方法是从每个循环的结构中打印一个参数,如下所示:
printf("%d\n", structures[7]->a);
我的问题是,如何将函数的参数设置为指向该数组中结构的第一个指针?
我做对了吗?
另外,参数需要从main中获取。
而且我还需要在这个函数之外使用数组的这些(指向)结构。
参数会是什么样子?
struct str *pointer; ?
另外,难道不能只将指针指向数组本身,它应该自动指向其中的第一个元素吗?
这样我就可以通过指针引用数组的第 n 个成员,因为我以后需要使用所有这些成员?
我查看了this 线程,但我仍然有点困惑,所以我很感激任何反馈。
【问题讨论】:
-
试试这个格式化小技巧:将整个函数作为单个代码块输入。