zltzlt 发表于 2020-1-14 16:40:55

C++ 指针

C++ 指针

指针的概念

指针把地址作为数据处理。它是一个既灵活,又危险的机制。

指针允许共享处理数据和内存动态分配。

指针变量是存储地址的变量。

而变量的指针是,当一个变量存储另一个变量的地址时,我们就说它是那个变量的指针。

使用指针的目的是提供间接访问。

例如,在某一程序中定义了 int x = 2;,如果系统给 x 分配的空间是 1000 号单元,而指向 x 的指针是变量 p,则 p 中存放的数据是 1000。

这时,1000 号单元的的内容有两种访问方式:


[*]访问变量 x(直接访问)。
[*]访问变量 p 指向的单元的内容(间接访问)。


定义指针变量

定义指针变量要告诉编译器该变量中存放的是一个地址。

指针变量的主要用途是提供间接访问,因此也需要知道指针指向的单元的数据类型。

指针变量的定义格式:

类型标识符 *指针变量名

例如:

int *intp;
double *doublep;

指针变量的操作

由于我们不知道系统分配给变量真正的地址是什么,所以我们需要使用取址运算符 & 取变量的地址。

例如表达式 &x 返回的是变量 x 的地址。

所以我们可以写成 int *intp = &x;。

注意:& 运算符后面不能跟常量或表达式。

例如,&2、&(a + b - c) 都是没有意义的。

通过解引用运算符 *,我们可以通过对指针变量的处理改变它所指向的变量的值。

例如,如果 p 指针指向整型 x 变量,那么 *p = 5 等价于 x = 5。

指针变量可以指向不同的变量。

假设有两个变量 x 和 y,指针 p 指向变量 x,我们可以对 p 的重新赋值改变指针的指向。

如果想让 p 指向 y,我们只要执行 p = &y 就可以了。这时,p 和 x 就无任何关系了。

空指针

没有指向任何空间的指针叫做 “空指针”。

空指针用常量 NULL 表示,NULL 的值一般赋为 0。

显然,不能解引用空指针指向的值,因为它没有指向任何空间。
页: [1]
查看完整版本: C++ 指针