小白C++指针慢慢学1

写在前面
  • 由于自身才疏学浅。不能很好领会C++指针。于是决定慢一点学习这一部分知识。
  • 挑战是 通过看 英文版的 C++ Primer 学习。翻译上可能和平常的叫法不同。
定义
  • 它是一个指向其他类型的 复合 (compound) 类型。它像引用的地方是它不是直接指向其它类型。不像的地方是,它是有自己的"权利"的 (in its own right)。
demo1 — 指针定义
int *p1, *p2; // int 指针 p1 p2
double *p3, p4; // double 指针 p3;对象 p4
  • 注意 * 不可省略。不然就像 p4 它只是一个 double,而不是你期望的指针"佳人"~。
特性
  • 它可以被赋值、拷贝;
  • 一个指针在自己生命周期中可以指向不同的对象;
hold the address of another object — 指针的"至高真理"

‘we get the address of an object by using the address of the address-of operator &’

  • & 运算符,被称为 address of 运算符,作用:取地址;
demo2 — 取地址
int val = 25;
int *p = &val; // p 拿着 val 的地址;p 是 指向 val 的指针
  • 这里我要穿插我看《算法笔记》的一点知识:p存地址,而*p则是一把钥匙,打开地址的门,取到里面的内容。
  • 注意类型对应,int 指针 指向 int 对象。上面也提到了,引用不是一个对象,我们的指针是指向对象的,所以byebye引用。这里暂时和你没什么关系。
Pointer value — 指针 到底有什么 value

共有4种状态:

  • 指向对象;
  • point to the location just immediately past the end of an object;(看不懂,中文书上是紧邻对象所指向的下一个位置)
  • 空指针,即它没有指向任何对象;
  • 可以是无效的,即上述3种之外的情况。

注意事项的翻译:"试图使用无效指针是错误的。我们都甚至没有初始化它,所以使用时候出现的问题编译器也不太好检测。试图 access 它的结果也是未定义过的。那么一定要知道一个指针是不是有效。尽管情况2、3下的指针有效,它们的使用仍然受限。因为它们不指向任何对象。那么我们就不要用他们找对象。就算找了,结果也是没有定义的。”

Using a Pointer to Access an object
  • *运算符,用来访问对象。也就是上一部分提到的 access。
  • 一定要用在有效的指针上,上面的话不能白看。
Demo 3 — *的作用
int val = 42;
int *p = &val;
cout << *p;
// 结果:42
*p = 0;
cout << *p;
// 结果:0
cout << p;
// 结果:一个地址值
  • 对,它就是前面提到的那把钥匙。用来解开指向 p 对象的内容。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值