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; // yiibaier to an integer double *dp; // yiibaier to a double float *fp; // yiibaier to a float char *ch // yiibaier to character
所有的指针的值的实际数据的类型,无论是整数,浮点数,字符或以其他,都是相同的,代表存储器地址的长十六进制数。不同数据类型的指针之间的唯一区别是变量的数据类型或常数,指针则是指向。
使用C++指针:
有几个重要的业务,我们使用指针非常频繁地操作。 (a)我们定义一个指针变量(b)分配一个变量的指针和(c)的地址终于在指针变量的可用地址来访问的值。这是通过使用一元运算符*返回位于其操作数所指定的地址的变量的值完成的。下面的例子利用这些操作:
#include <iostream> using namespace std; int main () { int var = 20; // actual variable declaration. int *ip; // yiibaier variable ip = &var; // store address of var in yiibaier variable cout << "Value of var variable: "; cout << var << endl; // print the address stored in ip yiibaier variable cout << "Address stored in ip variable: "; cout << ip << endl; // access the value at the address available in yiibaier 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++程序员应该明确:
概念 | 描述 |
---|---|
C++ Null 指针 | C++中支持null指针,这是一个常数为零在几个标准库中定义的值 |
C++ 指针运算 | 有一些可以对指针使用四则运算符: ++, --, +, - |
C++ 指针VS数组 | 有指针和数组之间有密切的关系。让我们来对比一下? |
C++ 指针数组 | 可以定义数组来存储一些数字的指针 |
C++ 指针的指针 | C++可以让指针指向指针 |
传递函数指针 | 通过引用或地址传递参数均使传递的参数将在调用函数被调用函数改变 |
从函数返回指针 | C++允许函数返回一个指向局部变量,静态变量和动态分配内存 |