programing

-> C 구조체의 형식 인수가 잘못되었습니다.

lovejava 2023. 10. 1. 19:00

-> C 구조체의 형식 인수가 잘못되었습니다.

구조체 배열의 항목에 액세스하여 다음과 같이 구조체 필드를 인쇄하려고 합니다.

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배열의 원소Album가리킨 물건a).

의 왼쪽 피연산자.->포인터여야 합니다..연산자는 포인터가 아닌 경우 사용됩니다.

당신은 사용해야 합니다..교환입니다.있잖아요, 당신이 A를 적용할 때*포인터에 대한 참조를 취소하는 것입니다.그것은 같은 것입니다.[]. 사이의 차이*그리고.[]괄호 안에는 포인터에서 오프셋이 필요하며, 이 오프셋은 포인터의 주소에 추가된 후 참조를 취소해야 합니다.기본적으로 이들 표현은 동일합니다.

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

질문에 연결하기바꾸다a[i]->field2그리고.a[i]->field3로.a[i].field2그리고.a[i].field3.

언급URL : https://stackoverflow.com/questions/4983010/invalid-type-argument-of-c-structs