我试图访问结构数组中的项目并打印结构字段,如下所示
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)
但我得到了很多错误
" - >"的无效类型参数
这个指针我做错了什么?
Jör*_*son 12
您需要使用.运算符.您会看到,当您将*指针应用于指针时,您将取消引用它.同样如此[].*和之间的区别在于[]括号需要指针的偏移量,在指针取消引用之前,它会被添加到指针中的地址.基本上,这些表达式是相同的:
*ptr == ptr[0]
*(ptr + 1) == ptr[1]
*(ptr + 2) == ptr[2]
Run Code Online (Sandbox Code Playgroud)
要连接到您的问题:更改a[i]->field2并a[i]->field3转到a[i].field2和a[i].field3.