c语言定义结构体函数 结构体定义函数 c语言

C语言结构体定义C语言结构体定义:struct为结构体关键字 , tag为结构体的标志,member-list为结构体成员列表,其必须列出其所有成员;variable-list为此结构体声明的变量 。
结构体是C语言中聚合数据类型(aggregatedatatype)的一类 。结构体可以被声明为变量、指针或数组等,用以实现较复杂的数据结构 。结构体同时也是一些元素的集合,这些元素称为结构体的成员(member) , 且这些成员可以为不同的类型 , 成员一般用名字访问 。
扩展资料
1、struct是声明结构体类型时必须使用的关键字,不能省略 。“结构体”这个词是根据英文单词structure译出的 。
2、structSTUDENT是定义的数据类型的名字,它向编译系统声明这是一个“结构体类型”,包括name、num、sex、age、score、addr等不同类型的项 。
3、structSTUDENT与系统提供的int、char、float、double等标准类型名一样,都是数据类型,具有同样的作用,都是用来定义变量的 。
参考资料来源:百度百科—结构体
C语言结构体函数STUf (STUa)
{STUb={"Zhao",'m' ,  85, 90};
inti;
strcpy( a.name,b.name );
a.sex = b.sex;
for ( i=0; i2; i++ )a.score[i] = b.score[i];
以上是将b中的数据赋值给a,相当于a=b;这样的一个操作
returna;
}
main()
{STUc= { "Qian", 'f' ,  95 ,  92 },d;
d = f(c);//这里传的c是个复制品(传递的不是结构体指针),所以c不会变,d接收f()函数的返回值,因为返回值的内容是f()中的b的值,所以,d与c不同
printf ("%s,%c , %d , %d,",d.name, d.sex ,  d.score[0], d.score[1]);
printf ("%s,%c,%d,%d\n", c.name, c.sex,c.score[0],c.score[1]);
}
输出结果为:A)Zhao , m,85,90,Qian,f,95,92
c语言中如何定义一个结构体结构体的定义如下所示,struct为结构体关键字,tag为结构体的标志,member-list为结构体成员列表,其必须列出其所有成员;variable-list为此结构体声明的变量 。在一般情况下,tag、member-list、variable-list这3部分至少要出现2个 。
结构体的成员可以包含其他结构体,也可以包含指向自己结构体类型的指针,而通常这种指针的应用是为了实现一些更高级的数据结构如链表和树等 。如果两个结构体互相包含,则需要对其中一个结构体进行不完整声明 。
扩展资料:
一、结构体作用:
结构体和其他类型基础数据类型一样,例如int类型,char类型,只不过结构体可以做成你想要的数据类型,以方便日后的使用 。
在实际项目中,结构体是大量存在的,研发人员常使用结构体来封装一些属性来组成新的类型 。由于C语言内部程序比较简单,研发人员通常使用结构体创造新的“属性”,其目的是简化运算 。
结构体在函数中的作用不是简便,其最主要的作用就是封装 。封装的好处就是可以再次利用 。让使用者不必关心这个是什么,只要根据定义使用就可以了 。
二、结构体的大小与内存对齐:
结构体的大小不是结构体元素单纯相加就行的,因为我们主流的计算机使用的都是32bit字长的CPU,对这类型的CPU取4个字节的数要比取一个字节要高效,也更方便 。
所以在结构体中每个成员的首地址都是4的整数倍的话,取数据元素时就会相对更高效,这就是内存对齐的由来 。每个特定平台上的编译器都有自己的默认“对齐系数”(也叫对齐模数) 。
程序员可以通过预编译命令#pragma pack(n),n=1,2,4,8,16来改变这一系数,其中的n就是你要指定的“对齐系数” 。

推荐阅读