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

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

printList(Album *a, int numOfStructs) { int i; int j; for(i = 0; i field2); printf("%s", a[i]->field2); printf("%d", a[i]->field3); for(j = 0; j numOfStrings; j++) { printf("%s", a[i]->strings[j]); } printf("\n"); } } 

但是我得到了很多错误

“ – >”的无效类型参数

这个指针我做错了什么?

aAlbum*类型,这意味着a[i]Album类型(它是i指向的Album对象数组中的第i个元素)。

->的左操作数必须是指针; 这个. 如果不是指针,则使用运算符。

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

 *ptr == ptr[0] *(ptr + 1) == ptr[1] *(ptr + 2) == ptr[2] 

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