指针(二)思维导图 本篇文章主要讨论了C语言中的指针概念,包括数组名的理解、使用指针访问数组、数组传参的本质、冒泡排序、 二级指针、指针数组和指针数组模拟二维数组等。 1. 数组名的理解 数组名通常情况下是数组首元素的地址,但是在特殊情况下,如sizeof(数组名),数组名表示整个数组,计算的是整个数组的大小单位是字节。例如,arr和&arr的区别,arr是数组名,&arr是整个数组的地址,而arr[0]和&arr[0]都是数组首元素的地址,但arr+1和&arr[0]+1相差4个字节,因为arr+1是跳过一个元素,而&arr[0]+1是跳过一个元素的地址。 2. 使用指针访问数组 使用指针可以访问数组的元素,例如,arr[0]和*(arr+0)是等价的,arr[1]和*(arr+1)是等价的,以此类推。使用指针可以灵活地访问数组的元素。 3. 一维数组传参的本质 一维数组传参的本质是上传递的是数组首元素的地址,所以函数形参的部分理论上应该使用指针变量来接收首元素的地址。例如,void func(int arr[]){}和void func(int *arr){}是等价的。sizeof(arr)计算的是一个地址的大小(单位字节),而不是数组的大小(单位字节)。 4. 冒泡排序 冒泡排序是一种简单的排序算法,核心思想是相邻的两个元素比较,如果不满足顺序就交换。例如,void bubble_sort(int arr[], int n){},可以对一个整型数组进行排序。 5. 二级指针 二级指针是指向指针的指针,例如,int* p = &a; int pp = &p;,pp指向的对象(p)的类型是int*。三级指针的概念类似,可以一直延伸下去。 6. 指针数组 指针数组是一个数组,存放指针的数组,每个元素是地址,可以指向一块区域。例如,int* parr[5];,parr是一个指针数组,每个元素都是一个指针,可以指向一个整型数组。 7. 指针数组模拟二维数组 指针数组可以模拟二维数组,例如,arr[i][j] === *(* (arr+i) +j),parr[i]是访问parr数组的元素,parr[i][j]就是整型一维数组中的元素。这种模拟可以实现二维数组的效果,但实际上并不是完全的二维数组,因为每一行并不是连续的。
- 粉丝: 1403
- 资源: 8
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 可直接运行 MATLAB数学建模学习资料 模拟算法MATLAB代码实现.rar
- 基于 Java+SQLServer 实现的医药售卖系统课程设计
- HCNP(HCDP)华为认证资深网络工程师-路由交换方向培训 -IESN中文理论书-内文.pdf
- 新版FPGA课程大纲,芯片硬件开发用的大纲
- ROS2下OpenCV识别物体区域和视频捕捉的样例
- STM32-EMBPI.PDF
- Font Awesome图标字体库提供可缩放矢量图标,它可以被定制大小、颜色、阴影以及任何可以用CSS的样式
- Bluefield 2固件镜像版本,fw-MBF2M345A-VENOT-ES-Ax-24.40.1000.bin
- 雪颜奇迹幻白双重莹白焕采霜50ML-1016-FA.rar
- Qt的QDOCK高级用法源码,包含linux和windows版本,从开源库下载