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]