这是什么意思,该如何修正:
来源:百度知道 编辑:UC知道 时间:2024/06/30 06:15:18
这个是程序:
#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 '
#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);
}
}