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

利用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

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥40 复杂的限制性的商函数处理
  • ¥15 程序不包含适用于入口点的静态Main方法
  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码