C语言--指针详解

指针的本质:

我们已知数据的存储是放在内存之中,但计算机内存有限,而有的数据所占空间又很大,此时就需要定义一个地址,此地址对应的内存用来存放数组的值。可以将地址比作钥匙,而数值就是钥匙对应的箱子,我们只要有了钥匙就可以找到并打开箱子,取得数值。

在内存中一个地址对应一个空间,空间中可以存放数值。

 我们可以通过指针来找到内存中存储的信息。可以说只要有了指针就可以更快地找到数值。

指针的大小:

32位平台下(x86环境):  指针的大小为4个字节

 64位平台下(x64环境):  指针的大小为8个字节

指针的加减运算:

1.指针+-整数(本质是指针跳过指向元素类型的大小)

如图:指针a指向数组首元素,数组中每个元素的大小为4个字节,当指针进行+1操作时,表示指针的指向向后跳过4个字节,原来指向8后跳过一个字节指向1.注意*优先级大于+

 于是我们在进行对地址对应元素访问时,可以采用指针加上数字.如下图:

指针每次加1,则向后跳过一个int型,这样也可以达到遍历数组的效果

 2.指针+-指针(前提是:两个指针必须指向同一个空间)

 可见数组指针减数组指针等于指针间的个数。

指针和数组:

数组名是数组首元素的地址

但是有两个例外:
1.sizeof(数组名),这里的数组表示整个数组所占空间的大小,单位:字节
2.&数组名,这里的数组名表示整个数组,取出的地址是整个数组的地址
   &arr+1相当于数组指针加上一个数组大小的值

 arr[i]、*(p+i)、*(arr + i)是完全等价的,p等价于arr(数组首元素的地址),当要通过地址来调取存储的数值时要采用 ' * '解引用操作符。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值