少年帮|C/C+编程笔记:一题吃透C语言指针与数组,助你理解指针的运算
前言
本文主要介绍的是C语言指针知识 , 希望对于广大读者学习C语言有一些帮助 。 深入了解C语言指针小知识 , 先看题算结果:
指针 , 是C语言中的一个重要概念及其特点 , 也是掌握C语言比较困难的部分 , 这道题目就很有效的考验了一个人对于指针的运算与C语言数组的掌握 。
知识解析
主要使用到的知识如下:
C语言数组指针: 一个指向数组的指针
C语言中指针如何表示二维数组
C语言指针的的运算: p+n的理解
数组指针
即是指向数组的指针 。 例:int (*p)[4]; p即为指向数组的指针 , 又称数组指针 。 数组指针是指向数组地址的指针 , 其本质为指针;指针数组是数组元素为指针的数组(例如 int *p[3],定义了p[0],p[1],p[2]三个指针) , 其本质为数组 。 数组指针的使用在某些情况下与指针数组很相似 , 要注意区别 。
指针如何表示数组
一维数组中有如下重点:
当一级指针p指向数组array时 , *(p+i)等效于array[i] 等效于p[i]
二维数组中有如下重点:
C语言指针运算
指针p+n 解释为: p+sizeof(指针所指向的类型)*n;说到这里不得不讲下C语言指针中的两个重要类型了 。 如果存在指针 int *p 则有如下两个类型:
指针的类型: 去掉变量, 剩下的就是类型 , 故是 int *;
指针所指向的类型: 去掉*和变量名即可得到地址对应的内存中的存储的数据类型 , 即int类型 。
故对于 int(*p)[3] 的p+1操作 应该理解为:p+sizeof(int[3])*1;
题目分析:
*(pArray[0] + 1))代表 array[0][1], 故打印2;
(pArray + 1) 移动的字节数: pArray+sizeof(int[4])*1,表示第一行(数组从第0行开始计数)第一个位置的地址,故**(pArray + 1) 得到的应该是第1行第一个元素 , 即打印5
pArray++后 pArray示第一行(数组从第0行开始计数)第一个位置的地址 ,而在数组中p[0] 并不一定表示第0行或者第0列哦 , 而是以p的当前地址中的偏移位置 , 故*(*pArray + 1)代表当前地址的第1个元素 , 故打印6。 综上打印结果是2 5 6。
运行测试
【少年帮|C/C+编程笔记:一题吃透C语言指针与数组,助你理解指针的运算】希望对大家有帮助!C语言的学习 , 真的很简单哦~
推荐阅读
- 金戈鐵馬|特朗普力挺铁杆支持者,枪杀两人的少年没错?抗议活动不断发酵
- 开封于七一|育迎宾尚法好少年,借温柔秋风多送法
- 少年|央视要搞选秀,热搜沸了!网友提名他当导师,点赞数第一
- 暖夏少年|2020电脑硬盘销量排行榜:七彩虹加入战局,硬是打倒了金士顿
- 少年一梦|2020畅销手机排行,iPhone无人超越,安卓旗舰全线溃败
- 少年帮|进入倒计时,华为突然宣布,供应链将迎来“洗牌”?
- 润杨的红楼笔记|贾母为什么不给林黛玉另择佳婿,而是坚持宝黛联姻?,元春赐礼后
- 润杨的红楼笔记|薛宝钗安排湘云住稻香村,她安了什么心?,抄检大观园后
- 董洁■董洁比李小璐更令人唏嘘
- 无话不谈|三款笔记本两款平板,联想又来抢钱了