C语言,指针的一些运算

若创建一个数组:int arr10 = 0;

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

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

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

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

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

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

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

相关推荐
玖玥拾20 分钟前
C/C++ 数据结构(二)双向链表
c语言·数据结构·c++
dnbug Blog29 分钟前
C 程序基本结构
c语言·程序结构
QiLinkOS37 分钟前
极客精神与商业思维的融合实践(2)
c语言·c++·人工智能·算法·开源协议
不会C语言的男孩1 小时前
Linux 系统编程 · 第 2 章:系统调用与库函数
linux·c语言
Luminous.2 小时前
C语言--day29
c语言·开发语言
十月的皮皮3 小时前
C语言学习笔记20260612-菱形图案打印(两种写法)
c语言·笔记·学习
AI科技星3 小时前
第三卷:质数王朝志(全卷定稿)
c语言·开发语言·汇编·electron·概率论
2601_951645744 小时前
C语言基础语法,分支语句
c语言·运算符·if语句·switch语句·分支语句
dtq04244 小时前
C语言刷题函数1-判断素数(分支语句,函数两种方法)
c语言·开发语言·学习
AI科技星5 小时前
第四卷:橡皮泥江湖(拓扑学)
c语言·开发语言·网络·量子计算·agi·拓扑学