![](/img/trans.png)
[英]Invalid type argument of '->' (Dynamic allocated vector of structs) in C
[英]Invalid type argument of -> C structs
我試圖訪問結構數組中的項目並打印結構字段,如下所示
printList(Album *a, int numOfStructs)
{
int i;
int j;
for(i = 0; i < numOfStructs; i++)
{
printf("number%d\n:", i+1);
printf("%s", a[i]->field2);
printf("%s", a[i]->field2);
printf("%d", a[i]->field3);
for(j = 0; j < a[i]->numOfStrings; j++)
{
printf("%s", a[i]->strings[j]);
}
printf("\n");
}
}
但我得到了很多錯誤
“ - >”的無效類型參數
這個指針我做錯了什么?
a
是類型的Album*
,這意味着a[i]
是類型的Album
(它是i
的陣列中的第i個元素Album
對象指向a
)。
->
的左操作數必須是指針; 這個.
如果不是指針,則使用運算符。
你需要使用.
運營商。 您會看到,當您將*
應用於指針時,您將取消引用它。 []
。 *
和[]
之間的區別在於括號需要指針的偏移量,在指針取消引用之前,它會被添加到指針中的地址。 基本上,這些表達式是相同的:
*ptr == ptr[0]
*(ptr + 1) == ptr[1]
*(ptr + 2) == ptr[2]
要連接到您的問題: a[i]->field2
和a[i]->field3
更改a[i].field2
和a[i].field3
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.