C++小白学指针2

写在前面

内容依然来自于英文版的 C++ Primer 小弟愚钝 各路大神多多指教

相同符号不同的意义

Demo

int i = 88;
int &r = i; // &是引用符号
int *p // *表示p是一个指针
p = &i; // &是address-of(取地址)符号
*p = i; // *是dereference符号
int &r2 = *p; // &是声明的部分 *是dereference符号 ------ 这个还不太明白

空指针

空指针不指向任何对象。在尝试使用之前代码会检查指针是否为空。获得有如下方式:

	int *p1 = nullptr; // 最直接的方式
	int *p3 = NULL; // 不include cstdlib 也可以 书上说必须 include cstdlib 这是一个旧的方式
	int *p2 = 0;
preprocessor
  • 跑在编译器前的程序;
  • 使用时自动用它自己的变量代替它的变量;
  • 不属于命名空间 std:: 所以使用时不需要前修饰(prefix);
现代C++程序避免使用 NULL,而代为使用 nullptr表示空指针

注意事项

  • int 型变量是不允许赋值给指针的,即使他是 0 也不可以;
  • 未经初始化的指针是造成运行时间错误的原因之一,此时找 bug 也会很难;
  • 在大多数的编译器中,使用未初始化的指针,内存中的那些字节被用做地址。使用时也是拿这个所谓的地址去找特定的对象。这个时候分辨在内存中那些由分配了的、由字节组成的地址是有效/无效是不可能的;
  • 推荐的方式:先定义对象,再定义指针。如果指针谁也不指向,那么把它初始化为 nullptr 或者 0。
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值