指针初级教学

指针一直是一个困扰初学者的问题,我当初学指针的时候也是一头雾水,但是后来回过头来再看,其实也不是那么复杂。
计算机语言是一套完备的系统,容不得丝毫含糊,所以每一个符号都是有它的特定的用途。
有两个重要的符号:* 和 & 。直接用一个例子来介绍 * 和 & 的用法。
int a = 1;
int* p = &a;
cout << "p = " << p << endl;
cout << "*p = " << *p << endl;
cout << "&p = " << &p << endl;
cout << endl;
cout << "a = " << a << endl;
cout << "&a = " << &a << endl;
输出结果:
可以看出来 *p 和 a 的值是一样的, p 和 &a 的值是一样的。

这里怎么理解?令初学者困惑的地方在于为什么两个地方的 * 位置不同?
*
  1. 这是因为 int* 中的 * 的声明一个指针变量 p ,它指向一个 int 型的变量,所以我们更倾向于把它和指向的变量的类型(int)放在一起。
  2. 而 *p 中的 * 是解引用运算符是将 p (指针变量)引用 a (整型变量)的关系暂时解除——释放所指向的内存给OS,再说的简单一点就是取它所指向的内存的值。在使用时我们更倾向于将它(运算符)和需要作用的变量(p)放在一起。
虽然怎么 * 的位置怎么放都没有关系,因为编译器在编译时会自动过滤掉空格符合制表符,但是理解清楚 * 之后就很容易根据它的具体用途形成自己的代码书写风格了。
所以两个地方的 * 根本不是一个意思:一个是变量类型;一个是运算符。
&
理解了 * 之后再来看 & 就清楚多了。 & 就是 取地址运算符,就是 取出某个变量的内存地址。一般用于将指针需要指向的变量的地址取出,赋给该指针变量。
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值