无效的类型参数 – > 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"); } }
但是我得到了很多错误
“ – >”的无效类型参数
这个指针我做错了什么?
a
是Album*
类型,这意味着a[i]
是Album
类型(它是i
指向的Album
对象数组中的第i
个元素)。
->
的左操作数必须是指针; 这个.
如果不是指针,则使用运算符。
你需要使用.
运营商。 您会看到,当您将*
应用于指针时,您将取消引用它。 []
。 *
和[]
之间的区别在于括号需要指针的偏移量,该指针在被取消引用之前会被添加到指针中的地址。 基本上,这些表达式是相同的:
*ptr == ptr[0] *(ptr + 1) == ptr[1] *(ptr + 2) == ptr[2]
要连接到您的问题: a[i]->field2
和a[i]->field3
更改a[i].field2
和a[i].field3
。