好的,我现在正在学习Visual Studio 2010中的C语言,我的目标是为平面结构(包含空中交通管制员模拟信息)分配足够的内存,以及#34; num"元素。下面是我对该功能的代码。 setData是一个已经完成的工作函数,用于存储单个平面结构数据。我的问题:如何调用setData" num"时间量并将所有元素返回主要?我的想法是当我返回分配的内存的第一个字节时,循环存储每个元素的数据....这是元素1而不是所有元素。
struct plane* list_intialize(unsigned int num)
{
struct plane * ptr;
int i=0;
ptr = (struct plane *) malloc(num * sizeof (struct plane));
for(i=0;i<num;++i)
setData(&ptr[i]);
return ptr;
}
这是我对这个功能的说明: 这里将无符号整数listsize传递给此函数,您将创建一个大小为listsize的链接列表。这将通过重复使用malloc并调用setData来将数据初始化为struct plane字段来执行。每次将进程放入列表时,都需要将其放置,以便按字段距离(按升序排序)对列表进行排序。你返回列表的头部
我有升序排序我只需要其余的
答案 0 :(得分:1)
你可以依靠指针算法:
int i;
for (i = 0; i < num; ++i)
setData(ptr+i);
或者您可以使用数组语法:
int i;
for (i = 0; i < num; ++i)
setData(&ptr[i]);
两者基本相同。
返回值(ptr - 指向第一个数组元素的指针)代表整个数组。您可以按如下方式访问整个字段:
// main
struct plane *pPlanes;
pPlanes = list_initialze(10);
int i;
for (i = 0; i < 10; ++i) {
// do something with plane
printf("%d\n", pPlanes[i].structelement); // array syntax
printf("%d\n", (pPlanes+i)->structelement); // pointer arithmetic
}