这是什么意思,该如何修正:

来源:百度知道 编辑:UC知道 时间:2024/06/17 10:04:06
这个是程序:
#include <stdio.h>

struct s
{
char name [10];
int age;
}

main()
{
struct s a[3] = {"John",19,"Paul",17,"Marry",18};
struct s *p;

for (p=a; p<3; p++)
{
printf("%s, %d\n", p->name, p->age);
}
}

编译后(14) : warning C4047: '<' : 'struct s *' differs in levels of indirection from 'const int '

你让p=a;
p是指针,指向了a在的地址,所以你不能每次跟3比,要跟a的结尾地址比。

for (p=a; p<a+3; p++)

for (p=a; p<3; p++)错了应为for (p=a; p<a+3; p++)

#include <stdio.h>

struct s
{
char name [10];
int age;
};

void main()
{
struct s a[3] = {"John",19,"Paul",17,"Marry",18};
struct s *p=a;

for (int i=0; i<3; i++,p++)
{
printf("%s, %d\n", p->name, p->age);
}
}