C语言重难点总结(1)-指针、二维数组、结构体(团结体、罗列)

[复制链接]
发表于 2026-1-31 08:38:51 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
本节内容
1.指针(指针数组、数组指针)
2.二维数组(指针利用与二维数组)
3.结构体、团结体、罗列
一、指针
1.什么是指针?
内存中字节的编号所在称为指针
2.指针的巨细?
固定为四字节
3.指针变量的界说
指针变量界说格式为:变量范例* 指针变量名=所在
比方:int* p1=NULL、int* p2=&a;
4.指针的解引用
 如下:

5.指针+1本领
我们要起首知道在指针指向一个数组时,指针变量代表数组首元素的所在
指针加一本领可以明白为:指针遍历 同一块  内存
如下

6.常量指针和指针常量
常量指针:在界说指针变量的时间如果前用const修饰,那么就成称该指针为常量指针
比方:const int* p;
指针常量:本质上是一个常量,用指针修饰它(指针指向的所在不能修改,所在的内容可以改变)
比方:int* const p;
7.二级指针
指向一级指针数据的指针
比方:int** q;
这里要知道二级指针解一次引用为一级指针
6.指针数组数组指针
指针数组:指针数组可以简单明白为指针的数组,顾名思义就是存储指针的一个数组
比方:int* p[4];
数组指针:数组指针可以简单明白为数组的指针,顾名思义就是指向一个数组的指针(常出如今二维数组),数组指针指向巨细为n个元素的数组
比方:int (*p)[4];  //此处数组指针为指向巨细为4个整型元素的数组
7.无范例指针
无范例指针可以指向恣意范例变量的所在
比方:void* p;
二、二维数组
1.什么是二维数组?
本质上二维数组是由多个巨细相称的一维数组构成。
界说方式为:范例名 数组名[行表达式][列表达式];
比方:int arr[3][4];//arr为三行四列的一个数组
2.在逻辑上二维数组相称于一个x行 * y列的平面图,那如果访问第2行的第y+1列会发生什么环境?


 如上所示,访问第2行第5列时,超出了二维数组列范围的巨细,超出部门会参加下一行的行中,以是,此处2行5列访问的为3行2列,元素为8。  
以是意味着二维数组是逻辑上不相邻但物理上是相邻的
3.二维数组行与列长度求法
行求法:int row=sizeof(arr)/sizeof(arr[0])
行求法:int col=sizeof(arr[0])/sizeof(arr[0][0])
4.二维数组中指针加一本领(数组指针)
一行一行向下偏移
指针界说  int (*p)[2]=&arr[0];
arr[2][3]<=>*(*(arr+2)+3)

三、结构体、团结体、罗列
1.结构体struck
(1)什么是结构体
差异数据范例的聚集称为结构体,结构体是一种范例。
(2)结构体的字节对齐题目
1)结构体没有嵌套结构体环境下,结构体内前几个元素的数据范例所占字节数之和是下一个元素范例的整数倍,如果不是给前一个范例补字节,补成下一个范例的整数倍,最大根本范例的整数倍
Ps:数组不是最大根本范例  e.g:char arr[20]的最大根本范例为char型1字节,但它统共占20字节
2)结构体必须是最大根本范例的整数倍
3)如果结构体嵌套,则嵌套后被嵌套结构体的按其第一个数据的范例作为该结构体的最大根本范例(与数组原理雷同),末了结构体内总字节巨细要为该结构体中最大根本范例的整数倍
4)pragma park(x)函数使 指定对齐方式巨细为x
如图所示

2.团结体union
(1)什么是团结体?
团结体和结构体雷同,也是一种本身界说的范例,团结体内所存变量共同利用一块内存空间。
(2)团结体的巨细
团结体的巨细至少是最大成员的巨细,当最大成员巨细不是最大对齐数的整数倍时,团结体巨细就要对齐到最大对齐数的整数倍数
如图

3.罗列enum
(1)什么是罗列?
罗列是一种特别的数据范例,是一种同范例的聚集。
比方: enum ChessType {black,white};
(2)罗列的巨细
罗列的底层为整型,以是巨细固定为四字节
比方    enum colorType{red,blue,green};   以是在此罗列中整型0代表赤色,1代表蓝色,2代表绿色

                                         0    1     2

             enum colorType{red=8,blue,green};

                                            8     9     10

             enum colorType{red=8,blue,green=1};

                                              8     9      1

回复

使用道具 举报

登录后关闭弹窗

登录参与点评抽奖  加入IT实名职场社区
去登录
快速回复 返回顶部 返回列表