结构体属于一种数据构造类型,它是由若干“成员”组成的。每一个成员可以是一个基本数据类型或者又是一个构造类型。
一、结构体的定义:
struct 结构名 {成员列表};
例如:struct stu
{
int num;
char name[30];
char sex;
float score;
};
在这个结构定义中,结构名为stu,该结构由四个“成员”组成,包括num(整型变量),name(字符数组),sex(字符变量),score(实型变量)。由此可见,结构体是一种由类型不同的若干有序变量组成的集合。
二、结构类型变量的说明
1)先定义结构体,再说明结构变量
struct stu
{
int num;
char name[30];
char sex;
float score;
};
struct stu people1,people2;//说明两个变量people1和people2为stu结构类型。也可以使用宏定义使一个符号常量来表示一个结构类型。
例如:
#define STU struct stu
STU
{
int num;
char name[30];
char sex;
float score;
};
STU people1,people2;
注意:1.结构体类型与结构体变量是不同的概念,不能混同。
2.对结构体变量中的成员,可以单独使用。
2 )在定义结构类型的同时说明结构变量
struct stu
{
int num;
char name[30];
char sex;
float score;
}people1,people2;//说明了people1,people2变量为stu类型后,就可以向这两个变量中的各个成员赋值。(成员就是num,name,sex,score)
3)结构变量成员的表示方法
一般形式: 结构变量名.成员名(中间的点不可省略,也不可以用空格代替)
例如: people1.sex 就是代表第一个人的性别
说明:结构体变量不能整体引用,只能引用变量成员。
4)结构变量赋值
意思就是给各成员赋值。可用输入语句或赋值语句来完成。
int main(int argc,const char *argv[])
{
@autoreleasepool{
struct stu {
int num;
char *name;
char sex;
float score;
}people1,people2;
people1.num = 66;
people1.name = "Leo";
printf("intput sex and score\n");
scanf("%c%f",&people1.sex,&people1.score);
people2 = people1;
printf("Number = %d\nName = %s\n",people2.num,people2.name);
printf("Sex = %c\nScore = %f\n",people2.sex,people2.score);
}
return 0;
}
本程序中用赋值语句给num和name两个成员赋值,用scanf函数输入性别和成绩的值,然后把people1的所有成员的值整体赋予people2,最后分别输出people2的各个成员值。
5)结构体类型嵌套使用
总结:
1.当一个结构体类型定义在函数之外时,它具有全局作用域;若定义在任一对花括号之内,则具有局部作用御,其作用范围是所在花括号构成的快。
2.结构体是一种复杂的数据类型,是数目固定、类型不同的若干成员的集合,结构体类型的定义只是列出了该结构的组成情况,编译系统并未因此而分配存储空间,当定义了结构体类型的变量或数组后,编译系统才会分配存储空间。
3.如果有两个结构体的成员类型、名称、个数相同,但结构体名不同,也是两个不同的结构类型。
个人心语:
大学时期,因为所学的专业是电子信息工程,课程中有涉及到一些C语言程序设计的内容,但都属于浅尝辄止,平时也比较贪玩,所以在这方面并没有积累较多的基础知识,基本上属于零基础。毕业后想往移动互联网方向发展,于是开始自学C语言,以此入门ios开发。自学过程主要靠看网上免费的教学视频,发现学习效果并不理想,主要是学习过程中的问题得不到及时有效的解决,往往越积越多,无法开展下一阶段的学习,于是报名参加了培训,经过一段时间的学习,发现了这门语言学习中的乐趣,对于一个基本算是初学者的人而言,收获颇多。发此博文,主要是想巩固之前学过的知识点,之后会继续写一些学习过程中有疑问或者自己学习心得的文章,如有任何疏漏或者错误的地方,也请各位大神抽空帮忙指导一下,在此先谢过了。也希望和更多同是零基础学习ios开发的人成为朋友,共同交流学习,学习本来就是一个需要互动的过程。