C++ 指针
C++ 指针学习起来既简单又有趣。有些 C++ 任务用指针更容易完成,而有些 C++ 任务,例如动态内存分配,如果没有指针就无法完成。
众所周知,每个变量都是一个内存位置,每个内存位置都有其定义的地址,可以使用表示内存地址的 & 运算符来访问。考虑下面的代码,它将打印定义变量的地址 -
#include <iostream> using namespace std; int main () { int var1; char var2[10]; cout << "Address of var1 variable: "; cout << &var1 << endl; cout << "Address of var2 variable: "; cout << &var2 << endl; return 0; }
当编译并执行上述代码时,它会产生以下结果 -
Address of var1 variable: 0xbfebd5c0 Address of var2 variable: 0xbfebd5b6
什么是指针?
指针是一个变量,其值是另一个变量的地址。与任何变量或常量一样,必须先声明指针才能使用它。指针变量声明的一般形式为:-
type *var-name;
其中,type是指针的基类型;它必须是有效的 C++ 类型,var-name是指针变量的名称。用于声明指针的星号与用于乘法的星号相同。但是,在此语句中,星号用于将变量指定为指针。以下是有效的指针声明:-
int *ip; // 指向整数的指针 double *dp; // 指向双精度浮点数的指针 float *fp; // 指向浮点数的指针 char *ch // 指向字符的指针
所有指针(无论是整数、浮点数、字符型还是其他类型)的实际数据类型都是相同的,即一个表示内存地址的长十六进制数。不同数据类型的指针之间的唯一区别在于指针指向的变量或常量的数据类型。
在 C++ 中使用指针
有一些重要的操作,我们会经常使用指针进行这些操作。(a) 我们定义一个指针变量。(b) 将变量的地址赋给指针。(c) 最后访问指针变量中可用地址的值。这通过使用一元运算符 * 来完成,该运算符返回其操作数指定地址处的变量的值。以下示例使用了这些操作 −
#include <iostream> using namespace std; int main () { int var = 20; // 实际变量声明。 int *ip; // 指针变量 ip = &var; // 将 var 的地址存储在指针变量中 cout << "Value of var variable: "; cout << var << endl; // 打印存储在 ip 指针变量中的地址 cout << "Address stored in ip variable: "; cout << ip << endl; // 访问指针中可用地址的值 cout << "Value of *ip variable: "; cout << *ip << endl; return 0; }
当上述代码被编译并执行时,它会产生如下结果 -
Value of var variable: 20 Address stored in ip variable: 0xbfc601ac Value of *ip variable: 20
C++ 中的指针
指针的概念很多,但都很简单,它们对 C++ 编程至关重要。以下是一些重要的指针概念,C++ 程序员应该清楚了解 -
Sr.No | 概念 &说明 |
---|---|
1 | 空指针
C++ 支持空指针,它是在多个标准库中定义的值为零的常量。 |
2 | 指针运算
指针可以使用四个算术运算符:++、--、+、- |
3 | 指针 vs 数组
指针和数组之间有着密切的关系。 |
4 | 指针数组
你可以定义数组来保存多个指针。 |
5 | 指针到指针
C++ 允许在指针上放置指针,因此开启。 |
6 | 将指针传递给函数
通过引用或地址传递参数,都可以使被调用函数在调用函数中更改传递的参数。 |
7 | 从函数返回指针
C++ 允许函数返回指向局部变量、静态变量和动态分配内存的指针。 |