handyxuefeng
2011-03-09 11:07
浏览 346
已采纳

利用typedef定义结构体不能编译通过诡异问题

今天在利用typedef定义结构体时,顺带定义了结构体的别名,指向结构体的指针变量别名以及结构体数组的别名,但是在程序的执行过程中法相智能是一段一段的执行,全部执行时编译器报错(用的是VS2008),特向高手请教。
程序代码如下:
#include
#define len 10
#define N 5
#define null 0
typedef struct student
{
int age;
float total;
} person_alias,*pointer_struct_alias,Stu_alias[5];
void main()
{

/* 1首先是person
person_alias p1; //这里person 等价于struct student
p1.age=20;p1.total=65.36;
printf("p1.age=%d,p1.total=%f\n",p1.age,p1.total);
*/

/* 2然后是定义结构体指针的别名 */
person_alias p2;
pointer_struct_alias pointer1; //定义一个指向结构体变量p2 的 指针变量pointer1
pointer1=&p2;
pointer1->age=29;pointer1->total=55.32;
printf("p2->age=%d,p2->total=%f\n",pointer1->age,(*pointer1).total);

/*(3) 然后是结构数组的别名*/
Stu_alias Stu;
int i=0;
pointer_struct_alias pointer2;
pointer2=Stu;
for(;i {
pointer2->age=2*i+2;
pointer2->total=1.1*i+60;
}
printf("结构体数组的数据为\n");
for(pointer2=Stu;pointer2 {
printf("Age=%d-->total=%f\n",pointer2->age,pointer2->total);
}
system("pause");

}
经过测试,分别对 1,2,3进行编译时都是能够正确运行的,但是1,2,3段一起编译时就报错,因没有分数,望帮忙。

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

1条回答 默认 最新

  • turing-complete 2011-03-09 13:29
    已采纳

    c语言不同于C++的一点是,变量的声明必须位于所有代码段的前面。请参看我写的文章的第七点内容,你就能明白了。http://blog.csdn.net/mougaidong/archive/2010/09/27/5909694.aspx

    点赞 打赏 评论

相关推荐 更多相似问题