C语言结构体 笔记
阿里云国内75折 回扣 微信号:monov8 |
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6 |
C语言提供结构体来管理不同类型的数据组合。C语言中的结构体类似于Java中的类。
声明结构体类型
定义变量名
定义变量名和初始化
结构体对齐
结构体的大小必须是其最大成员的整数倍!
1例如此结构体的大小为16。因为double类型占8个字节而short类型占2个字节所以就以8个字节为最大成员单位即使不满8字节也算作8字节。
2例如此结构体的大小为16字节。因为double类型占8个字节而int类型和short类型分别占4个字节和2个字节所以就以8个字节为最大成员单位。并且int和short的大小加起来小于8字节所以也只算作8字节。
6.结构体指针
一个结构体变量的指针就是该变量所占据的内存段的起始地址。可以设置一个指针变量用它指向一个结构体变量此时该指针变量的值是结构体变量的起始地址.指针变量也可以用来指向结构体数组中的元素从而能够通过结构体指针快速访问结构体内的每个成员。
从下面代码中我们可以看到, p就是一个结构体指针可以对结构体s取地址并赋给p这样借助成员选择操作符就可以通过p访问结构体的每个成员然后进行打印.我们知道数组名中存储的是数据的首地址所以可以将sarr赋给p这样就可以通过两种方式访问对应的成员。
使用(*p).num访问成员为什么要加括号呢?原因是“.”成员选择的优先级高于“*”(即取值运算符所以必须加括号通过*p得到sarr[0]然后获取对应的成员。
也可以指向
7.typedef的使用
typedef类似于取别名。
在下面的代码中使用stu定义结构体变量和使用struct student定义结构体变量是等价的;使用INTEGER定义变量i和使用int定义变量i是等价的; pstu等价于struct student*所以p是结构体指针变量。
8.C++的引用
引用是C++的语法使用手法是在形参位置可以用&符号c语言是不可以的同时代码文件后缀需要是cpp才行。当我们在子函数改变主函数中某一个变量的值时使用C++的引用操作起来非常方便如果我们只是读取对应变量的值而不改变是不需要使用引用的。
下图1为加入了C++引用的代码
下图2为纯C语言代码
区别在于C++使用“&”为引用符取代原C语言中的“*”为指针符。
子函数内修改主函数的一级指针变量(这是是重要的! )
引用符号位置没关系对于形参void modify_pointer(int*&p,int *q)我们不可以写为voidmodify_pointer(int &*p,int*q)因为引用符号必须和变量名直接相邻中间不可以放入其他否则会造成编译不通。