当前位置:首页 » 编程语言 » c语言二维结构体数组
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

c语言二维结构体数组

发布时间: 2022-01-13 06:02:24

‘壹’ c语言结构体数组

#include<stdio.h>
struct student
{
int num;
char name[20];
float score1,score2,sum,average;
};
void main()
{
struct student stu[5];
int i;

for(i=0;i<5;i++)
{
printf("请依次输入第%d个学生的学号,姓名,和两门成绩:",i+1);
scanf("%d%s%f%f",&stu[i].num,stu[i].name,&stu[i].score1,&stu[i].score2);
stu[i].sum=stu[i].score1+stu[i].score2;
stu[i].average=stu[i].sum/2;
}
printf("学号 姓名 成绩 总成绩 平均成绩\n");
for(i=0;i<5;i++)
printf("%d %s %.2f %.2f %.2f
%.2f\n",stu[i].num,stu[i].name,stu[i].score1,stu[i].score2,stu[i].sum,stu[i].average);
}

‘贰’ c语言中的结构体二维数组做参数问题

1、如果在函数外定义的结构数组,又要在一个函数中进行输入、输出,通常情况下,其参数传递类型需要传址,即
void shuchu(struct std **cansu);
void shuchu(struct std *cansu[]);

这样调用改为 shuchu(&aa);

对函数内的相应操作改为指针操作即可。

2、通常情况下,对于一个系统设计而言,其输入输出是分开的,也即在2个函数中,从系统分析而言,建议分开。当然,就测试而言,是可以的。

3、如果一定要采用2维数组做参数,按照对于多维数组做参数的要求,前几维一定要给出确切的数值

如2维: void shuchu(struct std cansu[5][]) 就可以了。

‘叁’ C语言结构体定义二维数组

自定义的一个类型,意思是这个结构体的二维数组
AdjMatrix arcs;
等效于
struct ArcCell arcs[MAX_NUM][MAX_NUM];

‘肆’ c语言,结构体数组

#include<stdio.h>
#include<stdlib.h>
struct student{
long int a;
char b[4];
int c;
char d[10];
char e[10];

};
int main()
{
int i=0;
struct student stu[400];
FILE*fp;
if((fp = fopen("students.txt","r"))==NULL)
{printf("打开文件失败!\n"); exit(0);}
while(fscanf(fp,"%ld%s%d%s%s",&stu[i].a,&stu[i].b,&stu[i].c,&stu[i].d,&stu[i].e)!=EOF)
{printf("%ld,%s,%d,%s,%s\n",stu[i].a,stu[i].b,stu[i].c,stu[i].d,stu[i].e); i++;}
fclose(fp);
return 0;

}

‘伍’ C语言 怎样动态分配一个二维结构体指针数组

//#include"stdafx.h"//vc++6.0加上这一行.
#include"stdio.h"
#include"stdlib.h"
structData{
intx;
};
intmain(void){
structData***p,x,y;
inti;
p=(structData***)malloc(2*sizeof(structData**));
for(i=0;i<2;i++)
p[i]=(structData**)malloc(3*sizeof(structData*));
p[0][0]=&x;//这两行是做存入structData*型指针试验
p[1][2]=&y;//
//...
for(i=0;i<2;free(p[i++]));
free(p);
return0;
}

‘陆’ c语言定义结构体数组

1、C语言结构体数组的定义:数组是有序的并且具有相同类型的数据的集合。
2、结构数组就是具有相同结构类型的变量集合。假如要用C语言,定义一个班级40个同学的姓名、性别、年龄和住址, 可以做成一个结构数组。
结构数组成员的访问是以数组元素为结构变量的,它的形式为:
1、结构数组元素—成员名。
2、例如:student[0].name,student[30].age
3、实际上结构数组相当于一个二维构造, 第一维是结构数组元素, 每个元素是一个结构变量, 第二维是结构成员。

‘柒’ C语言结构体数组的定义

所谓结构体数组,是指数组中的每个元素都是一个结构体。在实际应用中,C语言结构体数组常被用来表示一个拥有相同数据结构的群体,比如一个班的学生、一个车间的职工等。

结构体可以存储不同的数据类型,将他们互相联系起来。结构体数组可以连续存储多个结构体,和数组作用相似。比如想定义同一个最小外接矩形的四个坐标值,并给予这个矩形一个特征编号。当需要存储多个最小外接矩形的信息时,就需要动态申请一个结构体数组。

struct 结构体类型名{类型名 成员名;类型名 成员名;……},先声明结构体类型,再定义结构体变量名。声明结构体类型,不分配空间,定义结构体类型变量,就要分配内存空间。

(7)c语言二维结构体数组扩展阅读:

结构体数组指针类型:

一个结构体变量的指针就是该变量所占据的内存段的起始地址。可以设一个指针变量,用来指向一个结构体变量,此时该指针变量的值是结构体变量的起始地址,指针变量也可以用来指向结构体数组中的元素。

1、类型一:

指向结构体变量的指针引用结构体变量中的成员。

2、类型二:

用结构体变量和指向结构体变量的指针构成链表,链表是一种常见的重要的数据结构。链表有一个“头指针”变量,以head表示,它存放一个地址。该地址指向一个元素。

链表中的每一个元素称为“结点”,每个结点都应包括两个部分:

一是用户需要用的实际数据,

二是下一个结点的地址。

链表中各元素在内存中的存储单元可以是不连续的。要找某一元素,可以先找到上一个元素,根据它提供的下一元素地址找到下一个元素。这种链表的数据结构,必须利用结构体变量和指针才能实现。

可以声明一个结构体类型,包含两种成员,一种是用户需要用的实际数据,另一种是用来存放下一结点地址的指针变量。

参考资料来源:网络—结构体类型—数组

‘捌’ c语言中 结构体中有二维数组怎样赋初值

最基本的方法就是:

mx[0].name[0]=x;

mx[0].information[0][0]=x;

以此类推……

数组不能整体直接赋值,以下情况除外:

1.初始化时赋值:

typedefstructstar

{

charname[8];

charinformation[2][2];

}MX;


MXmx[2]={{"zhang",

{{'a','a'},

{'b','b'}}},//为了你能看清楚mx[0]分了三行,此处之前是mx[0],下面是mx[1]

{"lisi",{{'c','c'},{'d','d'}}}};


2.把数组放在结构里,两个结构可以直接赋值。

3.memcpy等方法。

需要注意几点,

  1. 你的name是个字节,所以如果name的大括号里用“zhangsan”,会踩内存,初学者常犯的错误,因为这种赋值隐含了"",字符串的截止符,换句话说你赋值zhangsan是8个BYTE+“”,这样就超过name[8]了。

  2. 你可以尝试指针×pName;

希望对你有所帮助。

‘玖’ C中结构体内有一个成员是二维数组,可以直接赋值另一个一维数组吗

1.如果这个结构体没有指针成员的话,可以直接用“=”号赋值(目前主流的编译器都支持这样的赋值,如果是特别老旧的编译器可能不支持这样,那就要把每个成员分别赋值了 如果有指针成员,那么这个指针成员不能简单的赋值

‘拾’ C语言中,结构体数组和二维数组的差别 初学者,请说的简单一些

二维数组 含有的数 是同一种变量类型的。

结构体 含有的数 一般是不同变量类型的。
结构体数组 是含有多个 同一种结构的 组合。

二维数组,数学上可以排列成 矩阵,几行几列。
结构体和 结构体数组,不能 排列成 矩阵。