黑马程序员--C基础--构造类型和结构体
2015-06-26 14:57
477 查看
——Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ——-
2–C语言中的构造类型有:数组类型、结构体类型、共用体类型。
3–“结构”是一种构造类型,它是由若干“成员”组成的,每一个成员可以是一个基本数据类型或者又是一种构造类型。
一般格式为:
注意:结构体格式没有参数,{}后面有一个分号;
例://定义一个学生的结构
注意:
1–结构体定义完成后,计算机不会给结构体分配内存空间。
2–会在定义结构体变量后,分配内存空间。
(2)结构体变量的定义
一般格式为:
例: struct stu stu1;
(3)匿名结构体变量的定义
所谓匿名结构体,就是该结构体没有结构体名称,因此在定义此类结构体变量时,应该在定义结构体的同时就定义变量。
例: struct{
int num;
char name[20];
int age;
}stu1,sut2;
(4)结构体变量中成员的访问方法
访问结构体变量成员的方法是:
例: stu1.age; //访问学生stu1的年龄
stu1.name; //访问stu1的姓名
注意:
如果结构体成员本身又是一个结构体类型,那么访问时必须逐级找到最低级的那个成员才能使用。
(5)结构体变量的初始化
结构体变量的初始化和普通的初始化一样存在两种方式:定义的同时初始化以及先定义后初始化。定义的同时进行初始化和普通变量一样,在次就不多说。
那么接下来重点说下先定义后初始化。
例:
注意:
(1)上述“张三”在程序中占用6个字节,这是因为汉字在utf-8编码中占用的字节数是三个,而xcode中默认的中文编码是utf-8格式。
(2)在国标中我们使用的是GB2312编码,该编码一个汉字占用2个字节。
(6)结构体变量占用内存空间的计算
计算结构体变量在内存中占用的字节数的方法
1–先找到对其模数,所谓对其模数就是结构体中的基本数据类型中占用字节数最大的那个。
2–再计算结构体变量中各个成员占用的字节和。
例:
(1)定义
定义格式:
例:
(2)结构体数组的初始化
以下面结构体为例:
1–定义的同时初始化
struct student stu[2]={{12,“zhangsan”,18},{11,”lisi”,17}};
2–先定义,后初始化
stu[1]=(struct student){19,”wanger”};
(1)结构体指针变量定义的一般形式:
例: struct student *stu;
(2)结构体指针间接访问成员值
一般形式:
1、构造类型
1–构造类型:构造类型是根据已定义的一个或多个数据类型用构造的方法来定义的。2–C语言中的构造类型有:数组类型、结构体类型、共用体类型。
3–“结构”是一种构造类型,它是由若干“成员”组成的,每一个成员可以是一个基本数据类型或者又是一种构造类型。
2、结构体
(1)结构体的定义:一般格式为:
struct 结构名{ 成员表列 };
注意:结构体格式没有参数,{}后面有一个分号;
例://定义一个学生的结构
struct stu{ int num; //定义学生编号 char name[20]; char sex; float age; };
注意:
1–结构体定义完成后,计算机不会给结构体分配内存空间。
2–会在定义结构体变量后,分配内存空间。
(2)结构体变量的定义
一般格式为:
struct 结构体名 变量名称;
例: struct stu stu1;
(3)匿名结构体变量的定义
所谓匿名结构体,就是该结构体没有结构体名称,因此在定义此类结构体变量时,应该在定义结构体的同时就定义变量。
例: struct{
int num;
char name[20];
int age;
}stu1,sut2;
(4)结构体变量中成员的访问方法
访问结构体变量成员的方法是:
结构体变量名.成员名
例: stu1.age; //访问学生stu1的年龄
stu1.name; //访问stu1的姓名
注意:
如果结构体成员本身又是一个结构体类型,那么访问时必须逐级找到最低级的那个成员才能使用。
(5)结构体变量的初始化
结构体变量的初始化和普通的初始化一样存在两种方式:定义的同时初始化以及先定义后初始化。定义的同时进行初始化和普通变量一样,在次就不多说。
那么接下来重点说下先定义后初始化。
例:
//定义结构体和结构变量 struct Student{ int num; char name[20]; int age; char sex; int score; }stu1,stu2; //初始化 stu1.num=21;//普通变量初始化,用.直接引用复制 strcpy(stu1.name,"张三");//因为name是个常量,不能通过上述方法初始化,所以使用strcpy()函数进行数组的初始化。
注意:
(1)上述“张三”在程序中占用6个字节,这是因为汉字在utf-8编码中占用的字节数是三个,而xcode中默认的中文编码是utf-8格式。
(2)在国标中我们使用的是GB2312编码,该编码一个汉字占用2个字节。
(6)结构体变量占用内存空间的计算
计算结构体变量在内存中占用的字节数的方法
1–先找到对其模数,所谓对其模数就是结构体中的基本数据类型中占用字节数最大的那个。
2–再计算结构体变量中各个成员占用的字节和。
例:
//该结构体模数是4,占用的字节数是12 struct stu{ short a; // 2 float b; // 4 char c; // 1 } //该结构体模数是4,占用的字节数是32 struct stu1{ char s[13]; char s1[13]; int a; }
3、结构体数组
结构体数组就是定义结构体变量时,该变量是一个数组,而不是一个普通的变量名称。结构体数组的每一个元素都是具有结构体类型的下标结构变量。(1)定义
定义格式:
struct 结构名{ 成员列表 }数组名[数组长度];
例:
struct student{ int num; char name[20]; int age; }stu[5];
(2)结构体数组的初始化
以下面结构体为例:
struct student{ int num; char name[20]; int age; };
1–定义的同时初始化
struct student stu[2]={{12,“zhangsan”,18},{11,”lisi”,17}};
2–先定义,后初始化
stu[1]=(struct student){19,”wanger”};
4、结构体指针
一个指针变量当用来指向一个结构变量时,称之为结构指针变量。结构体指针变量的值是指向的结构体变量的首地址。(1)结构体指针变量定义的一般形式:
struct 结构名 *结构指针变量名
例: struct student *stu;
(2)结构体指针间接访问成员值
一般形式:
(*结构指针变量).成员名 或 结构指针变量->成员名
相关文章推荐
- 开发人员、程序员与计算机科学家三者之间的区别
- Linux C函数参考手册(PDF版)
- 程序员必备,程序员四大忌
- 程序员们,做好你手里的俩份试卷
- 程序员必备的10大健康装备! 我们要工作更要健康!
- Lua教程(十七):C API简介
- 一篇关于程序员性格的文章第1/3页
- 8种类型极品程序员,不知你属于哪一种?
- C#实现打造气泡屏幕保护效果
- 程序员编程从初级到中级的10个秘诀
- C/C++数据对齐详细解析
- C 语言基础教程(我的C之旅开始了)[三]
- C++中的extern “C”用法详解
- C 语言基础教程(我的C之旅开始了)[七]
- C字符串操作函数实现方法小结
- 做一个优秀程序员应该知道的15件事
- C/C++ 宏详细解析
- 程序员开发项目是选择效率还是质量呢?
- 程序员的八种境界,你在哪一境?