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

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

报告相同问题?

悬赏问题

  • ¥15 R语言Rstudio突然无法启动
  • ¥15 关于#matlab#的问题:提取2个图像的变量作为另外一个图像像元的移动量,计算新的位置创建新的图像并提取第二个图像的变量到新的图像
  • ¥15 改算法,照着压缩包里边,参考其他代码封装的格式 写到main函数里
  • ¥15 用windows做服务的同志有吗
  • ¥60 求一个简单的网页(标签-安全|关键词-上传)
  • ¥35 lstm时间序列共享单车预测,loss值优化,参数优化算法
  • ¥15 Python中的request,如何使用ssr节点,通过代理requests网页。本人在泰国,需要用大陆ip才能玩网页游戏,合法合规。
  • ¥100 为什么这个恒流源电路不能恒流?
  • ¥15 有偿求跨组件数据流路径图
  • ¥15 写一个方法checkPerson,入参实体类Person,出参布尔值