指针

通过移动指针变量的位置来改变数组里面的元素

#include “stdio.h "
#include"stdlib.h”
int *f(int *s)
{
s += 2;
s[1] += 6;
*s-- += 7;
return s;
}
int main()
{
int a[5] = {1,2,3,4,5},*p;
p = f(a);
printf("%d,%d,%d,%d",a[1],a[3],p,p[1]);
}
先给各位读者举一个很简单的例子,请详看指针的精彩内容
各位读者不妨先猜一下printf打印出来的值
结果是2,10,2,10
相必大家会有点奇怪为什么打印出来的是2,10,2,10呢
其实啊,上面这段代码是通过函数调用之间做地址传递的,但是跟以往的通过实参将数组传递给指针变量不同的是他是通过(指针的指向偏移)来修改数组里边的内容的
首先呢先看我们自定义的指针函数int f(int s)里面的代码
s += 2,其实是一个指针变量做右移动2个位置得到了a[2]
相当于呢s先是指向了数组里面的第3个元素也可以理解为指针变量
s的首地址所以呢
s是指向了a[2],紧接着s[1]所指向的又是数组里面的哪个元素呢我们不妨推断一下指针变量
s的首地址为s[0]是数组当中的3元素,那如果s[1]不就是a[3]了吗
也就是4,
s[1] += 6;展开形式不就是s[1] = s[1] + 6,s[1]当中的元素为4
4+6 = 10,再赋值给s[1],s[1]是指向a[2]的 给s[1]赋值的过程不就是相当于给a[2]赋值吗这是相当于通过移动指针变量的位置从而改变数组当中的元素值

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 8
    评论
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

爱生活,爱代码

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值