C++ 指针运算符(& 和 *)
C++ 提供了两种指针运算符,一种是取地址运算符 &,一种是间接寻址运算符 *。
指针是一个包含了另一个变量地址的变量,您可以把一个包含了另一个变量地址的变量说成是"指向"另一个变量。变量可以是任意的数据类型,包括对象、结构或者指针。
取地址运算符 &
& 是一元运算符,返回操作数的内存地址。例如,如果 var 是一个整型变量,则 &var 是它的地址。该运算符与其他一元运算符具有相同的优先级,在运算时它是从右向左顺序进行的。
您可以把 & 运算符读作"取地址运算符",这意味着,&var 读作"var 的地址"。
间接寻址运算符 *
第二个运算符是间接寻址运算符 *,它是 & 运算符的补充。* 是一元运算符,返回操作数所指定地址的变量的值。
请看下面的实例,理解这两种运算符的用法。
实例
#include <iostream>
using namespace std;
int main ()
{
int var;
int *ptr;
int val;
var = 3000;
// 获取 var 的地址
ptr = &var;
// 获取 ptr 的值
val = *ptr;
cout << "Value of var :" << var << endl;
cout << "Value of ptr :" << ptr << endl;
cout << "Value of val :" << val << endl;
return 0;
}
using namespace std;
int main ()
{
int var;
int *ptr;
int val;
var = 3000;
// 获取 var 的地址
ptr = &var;
// 获取 ptr 的值
val = *ptr;
cout << "Value of var :" << var << endl;
cout << "Value of ptr :" << ptr << endl;
cout << "Value of val :" << val << endl;
return 0;
}
当上面的代码被编译和执行时,它会产生下列结果:
Value of var :3000 Value of ptr :0xbff64494 Value of val :3000
123
273***4334@qq.com
调用时变量前加 "&" -------返回该变量的地址
声明时变量前加 "基本类型 *" -------该指针变量表示另一个普通变量的地址 eg:int * 或 char *
调用时变量前加 "*"-------表示取该地址的内容
声明时变量前加 "基本类型 **"-------该二级指针变量表示另一个一级"基本类型 *"指针变量地址
123
273***4334@qq.com
hievery1
hie***y1@126.com
声明时,变量前加 "基本类型 &" :声明引用变量。它是某个已存在变量的别名,即该引用变量名称与原始变量名称都代表同一个变量。
声明时,变量前加 "基本类型 *" :声明指针变量。它的值是另一个变量的地址。
声明时,变量前加 "基本类型 **":声明二级指针变量。它的值是另一个一级"基本类型 *"指针变量的地址 (指针的指针)。
调用时,变量前加 "&" :使用取地址运算符获取该变量的地址
调用时,指针变量前加 "*" :使用间接寻址运算符获取该指针变量所指向的变量
调用时,二级指针变量前加 "**" :获取该二级指针变量所指向的指针所指向的变量
示例:
输出结果:
hievery1
hie***y1@126.com