我正在處理任務並遇到具有挑戰性的問題。就我而言,從我所瞭解的情況來看,後面的代碼應該是正確的,但它不起作用。基本上我想要的是將一個字符串值複製到一個結構的變量成員中,該結構是作爲指針傳遞給方法的數組的一部分。我錯過了什麼?更改結構數組元素中的值
typedef struct
{
char * name; //variable in struct I am trying to access
} Struct;
void foo(Struct * arr) //array of Structs passed into function as a pointer
{
int i = 0;
while(i++ < 2)
{
arr[i].name = malloc(sizeof(char *)); //assigning memory to variable in each Struct
arr[i].name = strdup("name"); //copying "name" to variable in each Struct
printf("C - %s\n", arr[i].name); //printing out name variable in each Struct
}
}
main()
{
Struct * arr; //defining pointer
arr = calloc(2, sizeof(Struct)); //allocating memory so pointer can hold 2 Structs
foo(arr); //calling function foo passing pointer into function
return 0;
}
該代碼編譯並運行,但它不做它設計的目的。請原諒我,如果這是微不足道的。我是新來的C語言
'typedef結構Struct'是一個非常,非常*,* ***非常糟糕想法*** – 2013-10-10 20:58:25
我使用「結構」只是爲了使它在閱讀時明顯表明我正在使用指針作爲結構數組 – etienz
1.數組的基本類型是不相關的。但是從聲明中可以看出,這是一小段代碼。 3.如果你想使它明確無誤,那麼不要typedef,並使用'struct Foo array [100];'中的'struct'關鍵字。不要造成混淆。請稍等。 – 2013-10-10 21:01:45