指针浅析:C/C++指针

指针在C/C++中属于难度系数比较高的招数了,很多人对指针的机制不是特别理解,这里我们用个故事来说明白指针到底是什么,又有什么用。

举个例子,假如你打算用北京平谷的1000吨苹果交付给远在海南的客户,你会怎么做呢?

一种方法是,你把仓库的1000吨苹果拉到海南,放到客户的仓库。

另一种方法是,你只告诉客户,你的苹果都在北京xx区xx街道xx号的仓库,客户自己去取就可以了。这个仓库的地址就是C/C++种的指针。而那1000吨的苹果,就是变量。所以,变量是实实在在的货物,可能比较沉重;而指针只是一个地址,轻量太多了。

int main()

{

    int apple = 1000;//apple就是1000吨的苹果。

    int *p = &apple;// p就是仓库地址。

    apple_check(apple); //调用函数对apple做处理,这里用的是apple,是具体的货物,很重哦,会把这些货物运到海南(copy到另一个函数的栈空间,如果apple这个变量很大,会很占用cpu资源)

    apple_check_p(p); //调用函数对apple做处理,这里传的仅仅是个地址,就是北京xx区xx街道xx号的仓库(这里往另一个函数栈空间传入的仅仅是一个地址,具体货物不需要copy进去,大大节省cpu资源了)

}

void apple_check(int apple)

{

    if (apple >= 1000)  //这里拿运载来的苹果做检测

    {

        printf("Apple is enough!\n");

    } else {

        printf("Apple is not enough!\n");

    }

}



void apple_check_p(int *papple)

{

    if (*papple >= 1000)  //这里通过地址去拿到1000t的苹果

    {

        printf("Apple is enough!\n");

    } else {

        printf("Apple is not enough!\n");

    }

}

到这里,我们就可以看到指针的作用了:用地址而不是具体的变量值,最终都拿到了变量的值,但用地址做传递就会高效很多。

如果你有更好的理解,请留言做进一步讨论。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值