我有一個類似的問題here關於分配和初始化一個指向結構的子函數。不幸的是,我無法擴展我在那裏初始化結構體的數組的良好解決方案。 第一個元素是OK,但第二個(以及所有後續)元素是零/ NULL。在子函數中分配和初始化結構數組
這是一個註釋示例。也許有人可以幫我...
#include <stdio.h>
#include <stdlib.h>
typedef struct {int n;} mystruct;
void alloc_and_init_array(mystruct **s)
{
// create an array containing two elements
*s = calloc(sizeof(mystruct), 2);
(*s[0]).n = 100;
(*s[1]).n = 200;
}
int main(void)
{
mystruct *s; // only a pointer. No memory allocation.
alloc_and_init_array(&s);
printf("1st element: %d\n", s[0].n); // here I get 100, that's OK
printf("2nd element: %d\n", s[1].n); // here I get 0. Why?
return 0;
}
謝謝大家,夥計們!無奈之下,我開始使用類似「* ptr + sizeof(mystruct)* i」的東西。您的解決方案非常棒。 – ClosedID 2010-09-06 22:18:07