无效的类型参数 - > C结构

jar*_*ryd 28 c pointers

我试图访问结构数组中的项目并打印结构字段,如下所示

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");
    }
}
Run Code Online (Sandbox Code Playgroud)

但我得到了很多错误

" - >"的无效类型参数

这个指针我做错了什么?

Jam*_*lis 45

a是类型的Album*,意思a[i]是类型Album(它是指向iAlbum对象数组中的第th个元素a).

左操作数->必须是指针; .如果它不是指针,则使用该运算符.


Jör*_*son 12

您需要使用.运算符.您会看到,当您将*指针应用于指针时,您将取消引用它.同样如此[].*和之间的区别在于[]括号需要指针的偏移量,在指针取消引用之前,它会被添加到指针中的地址.基本上,这些表达式是相同的:

*ptr == ptr[0]
*(ptr + 1) == ptr[1]
*(ptr + 2) == ptr[2]
Run Code Online (Sandbox Code Playgroud)

要连接到您的问题:更改a[i]->field2a[i]->field3转到a[i].field2a[i].field3.