问题描述
今天在利用typedef定义结构体时,顺带定义了结构体的别名,指向结构体的指针变量别名以及结构体数组的别名,但是在程序的执行过程中法相智能是一段一段的执行,全部执行时编译器报错(用的是VS2008),特向高手请教。程序代码如下:#include <stdio.h>#define len 10#define N 5#define null 0typedef 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=%fn",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=%fn",pointer1->age,(*pointer1).total); /*(3) 然后是结构数组的别名*/ Stu_alias Stu; int i=0; pointer_struct_alias pointer2; pointer2=Stu; for(;i<N;i++,pointer2++) { pointer2->age=2*i+2; pointer2->total=1.1*i+60; } printf("结构体数组的数据为n"); for(pointer2=Stu;pointer2<Stu+N;pointer2++) { printf("Age=%d-->total=%fn",pointer2->age,pointer2->total); } system("pause");}经过测试,分别对 1,2,3进行编译时都是能够正确运行的,但是1,2,3段一起编译时就报错,因没有分数,望帮忙。
解决方案
c语言不同于C++的一点是,变量的声明必须位于所有代码段的前面。请参看我写的文章的第七点内容,你就能明白了。http://blog.csdn.net/mougaidong/archive/2010/09/27/5909694.aspx