C语言,指针的一些运算

若创建一个数组:int arr[10] = 0;

用指针变量来储存数组首元素的地址:int* p = arr,这里arr是数组名,表示首元素地址。

若p = p + 1或者p++之后p本来指向数组首元素地址,就变成了指向第二个元素的地址,p + n即指向第n + 1个地址。

减法也是同理,还可以用指针的方式来相减,即指针减指针,第3个元素的地址减去第一个元素的地址就为2,以此类推。

语法规定,数组指针的比较可以向后越界比较,但是不能向前比较。

既然数组名代表首元素地址,为什么不能直接用数组名来加减呢

因为数组名代表首元素地址是数组名的性质,性质是不可改变的,不会因为加减就改变数组名是首元素地址的性质。

为什么传址调用就可以使用arr++了呢,因为函数接收到的不是数组,而是首元素的地址,这里的arr并不是数组名,而是一个存放了数组的首元素的指针变量,指针变量进行加减就是可以的了。

相关推荐
Byte Wizard2 小时前
C语言指针深入浅出3
c语言·开发语言
handler013 小时前
速通蓝桥杯省一:二分算法
c语言·开发语言·c++·笔记·算法·职场和发展·蓝桥杯
爱编码的小八嘎3 小时前
C语言完美演绎9-27
c语言
武帝为此3 小时前
【C语言进程与线程】
c语言·开发语言
Byte Wizard3 小时前
C语言指针深入浅出4
c语言·开发语言
灵哎惹,凌沃敏4 小时前
CM3/CM4内核总线知识总结
c语言·arm开发·单片机
努力努力再努力wz4 小时前
【Qt入门系列】第一个 Qt Widgets 程序:项目创建、UI 文件、Hello World、对象树与 qDebug 日志
java·c语言·开发语言·数据结构·c++·qt·ui
_Evan_Yao4 小时前
零基础学编程,第一门语言选Python还是C?
c语言·开发语言·python
笨笨饿5 小时前
#85_库函数开发
linux·c语言·网络·stm32·单片机·算法·个人开发
50万马克的面包5 小时前
C语言:三大基础排序算法模板 冒泡 / 选择 / 插入)
c语言·笔记·算法·排序算法