得到警告:从不兼容的指针类型赋值,用于在struct中使用指向char数组的指针

时间:2017-01-26 18:39:22

标签: c pointers

我得到"警告:从不兼容的指针类型分配"编译时我怎么能得不到这个警告?

以下是源代码的一部分:

typedef struct
{
    char id[9];
    char fName[9];    
    char lName[9];
    int finalExam;
    int midTerm;
    float quiz1;
    float quiz2;
    float quiz3;
    float totalMark;
} Student;

....
....
....

pointAt = students; // initialize pointer
            float* topMark;
            char* topLname;
            char* topId;
            topMark = &(*pointAt).totalMark;
            topLname = &(*pointAt).lName;
            topId = &(*pointAt).id;
            printf("top guy : %s\n", topLname);
            pointAt += 1;

我收到了警告:

topLname = &(*pointAt).lName;
    topId = &(*pointAt).id;

这两行导致该警告,因为它指向char数组。我该如何解决这个问题?

1 个答案:

答案 0 :(得分:2)

&(*pointAt).lName&(*pointAt).id的类型为char (*)[9],而这些值所分配的变量属于char *类型,因此不匹配。

取消&运算符以获得char [9]的表达式,该表达式将衰减为char *。当你在它时,使用->运算符来引用结构指针的成员:

topLname = pointAt->lName;
topId = pointAt->id;