C++ 指针的十点注意

1. 指针策略是C++内存管理理念的核心,它将地址视为指定的量,而将值视为派生量。一种特殊类型的变量——指针——用于存储值的地址。因此,指针名表示的是地址。*操作符称为间接值或解除引用操作符,将其应用于指针,可以得到该地址处存储的值(这和乘法使用的符号相同;C++根据上下文来确定所指的是乘法还是解除引用)。

2. *操作符两边的空格是可选的。传统上,C程序员使用这种格式:

int *ptr;

这里强调*ptr是一个int类型的值。而很多C++程序员使用这种格式:

Int* ptr;

这里强调的是int*是一种类型,是指向int的指针。在哪里添加空格对于编译器来说是没有任何区别的。不过:

Int* ptr1,ptr2;

将创建一个指针(ptr1)和一个常规int变量(ptr2)。对于每个指针变量名,都需要使用一个*

3. 虽然指针指向的数据类型的长度可能不同,但指针变量本身的长度通常是相同的。

4. 指针的危险

极其重要的一点是:在C++中创建指针时,计算机将分配用来存储地址的内存,但不会分配用来存储指针所指向的数据的内存。为数据提供空间是一个独立的步骤,忽略这一步骤无疑是自找麻烦。

警告:一定要在对指针应用解除引用操作符(*)之前,将指针初始化为一个确定的、适当的地址。这是关于指针的金科玉律。

5. 要将数字值作为地址来使用,应通过强制类型转换将数字转换为适当的地址类型:

int* ptr;

ptr = (int*)0xB8000000;

6. 只能用delete来释放由new分配的内存。这并不意味着要使用用于new的指针,而是用于new的地址。不过,对空指针使用delete是安全的。

7. 可以修改指针的值,因为它是变量。但是不能修改数组名的值,因为数组名是常量。

8. 对数组名使用sizeof操作符得到的是数组的长度,而对指针应用sizeof得到的是指针的长度,即使指针指向的是一个数组。

9. 绝对不要对未被初始化为适当地址的指针解除引用。

10 cout 和多数 C++ 表达式中, char 数组名、指向 char 的指针以及用引号括起的字符串常量都被解释为字符串第一个字符的地址。

转载于:https://my.oschina.net/imtoby/blog/64512

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值