‘壹’ 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等方法。
需要注意几点,
你的name是个字节,所以如果name的大括号里用“zhangsan”,会踩内存,初学者常犯的错误,因为这种赋值隐含了"