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; // pointer to an integer double *dp; // pointer to a double float *fp; // pointer to a float char *ch // pointer to character
所有指针的值的实际数据类型,无论是整数、浮点数、字符还是其他类型,都是相同的,都是表示内存地址的长十六进制数。不同数据类型的指针之间的唯一区别是指针所指向的变量或常量的数据类型。
在 C++ 中使用指针
有一些重要的操作,我们将非常频繁地使用指针进行这些操作。(a)我们定义一个指针变量。(b)将变量的地址分配给指针。(c)最后访问指针变量中可用地址处的值。这是通过使用一元运算符 * 来完成的,该运算符返回位于其操作数指定的地址处的变量值。以下示例利用了这些操作 -
#include <iostream> using namespace std; int main () { int var = 20; // actual variable declaration. int *ip; // pointer variable ip = &var; // store address of var in pointer variable cout << "Value of var variable: "; cout << var << endl; // print the address stored in ip pointer variable cout << "Address stored in ip variable: "; cout << ip << endl; // access the value at the address available in pointer 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++ 程序员应该清楚以下几个重要的指针概念: