|

楼主 |
发表于 2011-4-30 10:55:10
|
显示全部楼层
本帖最后由 nbceshi 于 2011-4-30 10:56 编辑
问题应该不是变量的问题,因为变量在声明的时候已经赋予一个值了,结构体大小也在声明结构体的时候定义了。应该是我想声明的是一个数组结构体单元名,编译器当成了声明一个结构体数组,我添加了一个字符变量来代替数组单元名,没这个问题了,但还有2个错误,不知道什么原因。- #include <stdio.h>
- void main()
- {
- struct student //定义结构体结构
- {
- int num; //学号
- int score; //分数
- struct student *next; //存放下一个节点地址的指针
- };
- struct student *head; //声明可以存放student结构体地址的指针
- int i, k;
- char stu = 'a';
-
- for(i=0; 1; i++,stu++)
- {
- printf("请输入学号: ");
- scanf("%d",&k); //将学号赋值给k
- if(k==0?0:1) //测试k是否是0
- { //k为真即k不是0
- struct student stu; //声明结构体student变量stu[i],i为第i次循环
- stu.num = k; //将k的值(学号)赋值给学号存放单元
- if(i == 0) //判断是否第1次
- {
- head = &stu; //第一次则将stu[0]的地址赋予head
- stu.next = NULL;//将stu[0]的next的值赋NULL
- }
- else //不是第一次则说明已经存在结构体变量
- {
- (stu-1).next = &stu;//将上一个变量的next存放stu[i]的地址
- stu.next = NULL; //使next的值为NULL
- }
- }
- else //如果输入的学号是0
- {
- printf("\n");
- for( ; i; i--) //如果i是0即第一次就输入0,则直接退出输出,i不是0则按照i的次数输出链表
- {
- printf("学号为%d的学生成绩为%d\n",head->num,head->score);
- head = head->next;
- }
- break; //i是0并第一次就输入0则退出循环,结束程序。
- }
- printf("请输入分数: ");//接受完学号,开始接受分数
- scanf("%d",&stu.score);
- }
- }
复制代码 报以下错误
D:\Backup\我的文档\c\0.c(30) : error C2088: '-' : illegal for struct
D:\Backup\我的文档\c\0.c(45) : error C2224: left of '.score' must have struct/union type
分别在30行和45行 |
|