簡體   English   中英

無效的類型參數 - > 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]->field2a[i]->field3更改a[i].field2a[i].field3

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM