我得到"警告:从不兼容的指针类型分配"编译时我怎么能得不到这个警告?
以下是源代码的一部分:
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数组。我该如何解决这个问题?
答案 0 :(得分:2)
&(*pointAt).lName
和&(*pointAt).id
的类型为char (*)[9]
,而这些值所分配的变量属于char *
类型,因此不匹配。
取消&
运算符以获得char [9]
的表达式,该表达式将衰减为char *
。当你在它时,使用->
运算符来引用结构指针的成员:
topLname = pointAt->lName;
topId = pointAt->id;