求下面C程序的运行结果

#include
#define SIZE_NAME 30
#define SIZE_STU 4

typedef struct _per_infor {
char name[SIZE_NAME];
int age;
char gender;
}per_infor_t;

int main() {
per_infor_t stu[SIZE_STU]={
{"raul",25,'F'},{"joe",29,'M'},{"philip",22,'M'},{"alan",28,'M'}
};
per_infor_t p=stu;

while(p<stu+SIZE_STU)
p++; /
此句是我自己加上的,结果不明白是什么意思*/
printf("%s\n",(p++)->name);

return 0;

}

变量p是在哪里定义的呢?在VC 环境下运行下不就知道结果了么。

如果去掉p++,运行结果正常

vc6.0 下结果为:
?还一个箭头,打不上

#include
#define SIZE_NAME 30
#define SIZE_STU 4

typedef struct _per_infor {
char name[SIZE_NAME];
int age;
char gender;
}per_infor_t;

int main() {
per_infor_t stu[SIZE_STU]={
{"raul",25,'F'},{"joe",29,'M'},{"philip",22,'M'},{"alan",28,'M'}
};
per_infor_t *p=stu;

while(p<stu+SIZE_STU)
p++;

    printf("%s\n",p->name);

return 0;

}
改成这样,结果还是不正常

1.源程序将会编译不过去,问题代码如下:
per_infor_t p=stu;
stu是一个数组名,p是一个变量,不能这么赋值。
2.建议将上面的代码修改为,这样就不会有问题。
per_infor_t *p=stu;