c语言-C语言结构体数组与顺序表的问题

问题描述

C语言结构体数组与顺序表的问题

#define DataType struct students cla[3]

struct students
{
long code;
char *name;
float score[3];
float sum;
};

typedef struct
{
DataType list[MaxSize];
int length;
}SeqList;

SeqList *t;

我要修改到list[0]里结构体数组cla[0]中的code元素,应该怎么写??
下面的代码可以吗?
scanf("%d",t->cla[0]->list[0].code);

解决方案

貌似define那里就过不去。。

解决方案二:

#define 与 typedef
#define PI 3.14 这样程序后面所有的PI 都会被替换换为3.14,这样可以加强程序的健壮性,如果你想把PI 改为3.1415的时候,比你去程序找出所有的
3.14好多了。

typedef 是给一个已有的类型取一个别名, 比如
typedef int integer;那程序中所有的integer 都等价于int
int a;和integer a 是一样的

你的程序中DataType 在后面才声明,c中药各个函数和变量要先声明后使用,而且写的先后也不对,

解决方案三:

感觉这句话“我要修改到list[0]里结构体数组cla[0]中的code元素”描述的数据结构有点混乱。
你是要建立一个顺序链表SeqList,顺序链表的节点是 students结构体变量。
#define MaxSize 3
typedef struct students
{
long code;
char *name;
float score[3];
float sum;
}DataType ;
typedef struct
{
DataType list[MaxSize];
int length;
}SeqList;
SeqList *t;
scanf("%d",t->list[0].code);//这里你只用SeqList *t定义了指针变量,而t指向的结构体SeqList变量的存储空间未定义,需要用malloc( )你开辟SeqList存储空间~
//#define DataType struct students cla[3] ,但DataType 在后面才声明,编译器会报错~

解决方案四:

SeqList *t;只是定义,还未初始化。也就是还未分配空间。
请先初始化。

时间: 2024-08-02 15:14:16

c语言-C语言结构体数组与顺序表的问题的相关文章

c语言编程-C语言关于使用结构体数组的问题

问题描述 C语言关于使用结构体数组的问题 #include struct Student { int mun; long char name[5]; int score[3]; struct Student *next; }; int main() { struct Student a,b,c,*head,*p; a.mun=10101;a.name="张丹";a.score[0]=89;a.score[1]=95;a.score[2]=91; b.mun=10103;a.name=&

图片-C语言,请教关于结构体数组的问题

问题描述 C语言,请教关于结构体数组的问题 图中倒数第二行 scanf("%d",&G[i]); 结构体VNode中有两类元素int data 和ArcNode *firstarc 为什么"&G[i]"就是给结构体VNode中的data赋值? 解决方案 &G[i]和&G[i].data的地址相同,有的编译器允许这样使用. 解决方案二: C语言结构体数组赋值问题IOS开发---C语言-?结构体数组C语言中的结构体数组 解决方案三: 我想

c语言-C语言typedef问题与结构体数组问题

问题描述 C语言typedef问题与结构体数组问题 typedef struct students{ long code; char *name; float score[3]; float sum;}cla[40];这样定义是什么意思呢?cla代替了struct students?正确的写法是怎么样的 解决方案 定义了一个班级类型,它代表40个学生,cla代替了students[40]以后可以定义变量cla cla1;cla1就是一个40个students组成的数组 语法上没问题,不过个人觉得

编程c语言-vs2013中如何定义一个结构体该结构体定义一个结构体数组 结构体数组中包含一个链表

问题描述 vs2013中如何定义一个结构体该结构体定义一个结构体数组 结构体数组中包含一个链表 这样定义对么 编译时报错 缺少:在*前面 这是哪错了啊 请高手指点指点 解决方案 你把两个结构体的定义调换一下次序就没问题啦,要先声明或定义结构体:Station,才能使用 解决方案二: 因为struct Station是在struct Train结构体之后才定义的,所以你要在这之前先声明一下struct Train 解决方案三: 做一个前向声明,或者调换两个结构位置都可以. 解决方案四: 结构体数组

C语言结构体数组同时赋值的另类用法

说到C语言结构体数组的同时赋值,许多人一想就会想到用以下的这种方法,咱们来写一个例子: #include <stdio.h> struct student { int a; int b ; int c ; }; struct student array1[1000] ; int main(void) { int i ; for(i = 0 ; i < 1000 ; i++) { array[i].a = 1 ; array[i].b = 2 ; array[i].c = 3 ; } fo

c语言-C语言中如何删除TXT文件中特定的结构体数组

问题描述 C语言中如何删除TXT文件中特定的结构体数组 用 r 打开文本文件a, 用a打开文本文件b,(临时文件) for{ fprintf 将a文件的数据存入fp: 判断是不是符合要删除的数据: 如果不是,将fp数据存入文件b; } 用 W 打开文件a,用r打开文件b, for{ fprintf fscanf } 生成之后打开文本文件a数据只有原本的第一条,其他的都不见了 求教 C语言中如何删除TXT文件中特定的结构体数据 解决方案 http://zhidao.baidu.com/link?u

c语言-C语言结构体数组在头文件里赋值的问题

问题描述 C语言结构体数组在头文件里赋值的问题 上面的赋值是写在一个头文件里的,用VS2008,或者VC++6.0调都会出现上面的错误,VS2013和DEV就不会报错. 完整代码是: //头文件"信息.h" struct students { long code; char *name; float score[3]; float sum; }; void default_initiate(struct students stu[ ]) { stu[0] = { 20140001, &

C语言及程序设计进阶例程-13 结构体数组及其应用

贺老师教学链接  C语言及程序设计进阶 本课讲解 结构体数组应用举例 #include <stdio.h> #include <string.h> typedef struct { char name[20]; int count; } Person; int main( ) { Person person[3]= {{"Li",0},{"Zhang",0},{"Fun",0}}; int i,j; char name[2

C语言 结构体数组详解及示例代码_C 语言

所谓结构体数组,是指数组中的每个元素都是一个结构体.在实际应用中,结构体数组常被用来表示一个拥有相同数据结构的群体,比如一个班的学生.一个车间的职工等. 定义结构体数组和定义结构体变量的方式类似,请看下面的例子: struct stu{ char *name; //姓名 int num; //学号 int age; //年龄 char group; //所在小组 float score; //成绩 }class[5]; 表示一个班级有5个学生. 结构体数组在定义的同时也可以初始化,例如: str