C语言基础-结构体22
来源:互联网 发布:java poi excel 换行 编辑:程序博客网 时间:2024/06/05 08:23
1 .结构体的类型说明
struct 新类型名称
{
//在这里面写上,你创建的新类型是由哪些变量联合而成的.
数据类型1小变量名称1;
数据类型2小变量名称2;
数据类型3小变量名称3;
};
struct Student
{
char *name;
int age;
int score;
float height;
};
代表新创建了1个数据类型.这个数据类型的名称叫做 struct Student.
这个新的类型是由 1个char* int int float的小变量联合而成的.
2. 如何声明结构体类型的变量.
1).我们使用结构体仅仅是创建了1个新的类型而已,并没有变量.
结构体的作用:是在指定新的数据类型是由哪些小变量组合而成的.
2).声明结构体类型的变量.
语法格式:
struct 新类型名称变量名;
struct Student stu;
代表声明了1个 struct Student类型的变量.变量名字叫做stu
这个时候, stu才是1个变量.才会在内存中申请空间.
这个变量中,是由这个新的结构体类型规定的小变量组合而成的.
这个结构体大变量是由结构体类型规定的小变量组合而成的.
3).结构体变量的类型:
struct Student stu;
这个时候stu结构结构体变量的类型是struct Student.而不是Student
3.结构体变量的初始化.
1).先声明变量,再使用点1个1个的为成员赋值.
2).在声明结构体变量的同时,就为结构体变量的成员初始化. *******
struct Student xiaoHua = {"小花",17,89};
3).在声明结构体变量的同时,按顺序初始化部分成员
struct Student liLei = {"李雷"};
4).指定成员的初始化
struct Student jim = {.name = "吉姆",.age = 17, .score = 100};
声明1个结构体变量,如果没有这个结构体变量的成员赋值.那么成员是有值是垃圾值.
只要在声明结构体变量的同时.只要初始化1个成员,其他的成员就会被自动的初始化为0.
4.结构体类型的作用域
如果结构体类型是定义在函数的内部的,那么这个结构体类型只能在这个函数的内部使用.
如果我们希望这个结构体类型可以用在所有的函数中.
那么就把这个结构体类型定义在函数的外面.定义在最顶上.
一般情况下,我们的结构体类型都是定义在函数的外面,以让所有的函数来使用.
5. 结构体变量之间的相互赋值.
1).相同结构体类型的变量之间绝对是可以相互赋值的.
2).结构体变量之间的赋值原理
将源结构体变量中的每一个成员的值 拷贝一份 赋值给目标结构体变量中对应的成员.
3).结构体变量之间赋值 是值传递.
6.结构体数组
struct 结构体类型名称数组名称[数组长度];
1).先声明结构体数组,然后用下标1个1个元素的赋值.
注意:当我们为结构体数组的元素赋值的时候.如果直接使用大括弧来初始化.
就必须要前面加1个小括弧,来告诉编译器我们的给的数据类型.
struct Student students[5];
students[0] =(struct Student){"小明1",16,56};
students[1] =(struct Student){"小明2",18,100};
students[2] =(struct Student){"小明3",19,10};
students[3] =(struct Student){"小明4",21,100};
students[4] =(struct Student){"小明5",13,3};
2).在声明结构体数组的同时,就为所有的元素初始化.
struct Student students[5] =
{
{"小明1",16,56},
{"小明2",18,100},
{"小明3",19,10},
{"小明4",21,100},
{"小明5",13,3}
};
3. 结构体数组的长度计算.
1).先使用sizeof计算出数组占用的总的字节数.
2).使用总字节数 除以 每1个元素占用的字节数.
int len = sizeof(students) / sizeof(struct Student);
7.结构体指针
struct 结构体类型名称*指针名;
struct Student* pStu;
声明了1个pStu指针变量.这个指针变量的类型是struct Student*.
这个指针就只能指向struct Student类型的变量.
初始化:
a. 取出结构体变量的地址.
使用取地址运算符 &
就可以取出结构体变量的地址.
b. 将地址赋值给指针变量.
struct Student xiaoMing = {"小明",18,100};
struct Student* pStu = &xiaoMing;
如何使用指向结构体变量的指针来间接的访问这个结构体变量呢?
a. (*结构体指针名).成员.
(*pStu).age = 18;
b. 使用箭头 ->来访问.
pStu->age = 19; 代表把19赋值给pStu指针指向的变量的age成员.
8.结构体和函数
1.结构体作为函数的参数
1).结构体是我们自定义的一种数据类型,也是一种数据类型所以当然可以作为函数的参数.
2).结构体作为参数传值 是值传递.
3).如果你就是希望函数的内部可以修改实参结构体变量的值,那么就是要指针.
2.结构体作为函数的返回值.
1).结构体类型完全可以作为函数的返回值.
2).在返回的时候 直接将这个结构体变量的值返回即可.
3).如果你要返回结构体变量的地址.那么就要把这个结构体变量创建在堆区.
注意
1).一定要先使用结构体定义新的类型.
然后才可以根据这个类型声明这个类型的变量.
2).结构体变量是1个变量.所以可以批量声明.
struct Student xiaoHua,jim,meimei,lilei;
3).结构体的名称的的命名规范,要求每一个单词的首字母大写.
4).我们之前,是先声明结构体类型,再根据这个类型声明变量.
实际上这两步可以简化为1个步骤.
struct Computer
{
char *cpuModel;
int memSize;
char *brand;
} iMac,lenvol,hp,dell;
声明结构体类型的同时,声明结构体类型的变量.
5). 匿名结构体
就是这个结构体类型没有名称.
struct
{
char *barnd;
char *color;
int price;
}fengshan1;
a. 只能在声明结构体的同时就创建变量.
b. 不能单独的声明这个结构体类型的变量.
- C语言基础-结构体22
- c语言基础-结构体
- C语言基础:结构体
- C语言基础-结构体
- C语言基础结构
- C语言基础-结构体和联合体
- 结构体(c语言基础)
- C语言结构体 基础学习
- C语言基础-结构体和联合体
- c语言基础之结构体
- C语言基础 结构体 枚举
- C语言基础之结构体、枚举
- C语言基础——结构体
- 黑马程序员 C语言基础:结构体
- 【C语言基础】结构体指针
- C语言基础—结构体
- C语言基础---------函数,结构体
- C语言基础--函数和结构体
- location document 对象及属性
- window对象的属性及方法
- location对象、document对象
- iOS BLE 模块开发总结
- C++语言总结(二)
- C语言基础-结构体22
- 数字货币开发专题(数字货币开发者指南)
- JavaScript对象
- windows 下安装jdk
- 写python的扩展模块(C)
- 【模板】Spfa单源最短路径
- Android图片上传(头像裁切+原图原样)
- 预习JavaScript内置对象
- C++语言总结(一)