📜  C++指针

📅  最后修改于: 2020-12-17 05:07:56             🧑  作者: Mango


C++指针简单易学。有些C++任务使用指针更容易执行,而其他C++任务(例如动态内存分配)如果没有它们就无法执行。

如您所知,每个变量都是一个内存位置,并且每个内存位置都有其定义的地址,可以使用与号(&)运算符访问该地址,该运算符表示内存中的地址。考虑以下内容,它将打印定义的变量的地址-

#include 

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 

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++程序员应该是清楚的-

Sr.No Concept & Description
1 Null Pointers

C++ supports null pointer, which is a constant with a value of zero defined in several standard libraries.

2 Pointer Arithmetic

There are four arithmetic operators that can be used on pointers: ++, –, +, –

3 Pointers vs Arrays

There is a close relationship between pointers and arrays.

4 Array of Pointers

You can define arrays to hold a number of pointers.

5 Pointer to Pointer

C++ allows you to have pointer on a pointer and so on.

6 Passing Pointers to Functions

Passing an argument by reference or by address both enable the passed argument to be changed in the calling function by the called function.

7 Return Pointer from Functions

C++ allows a function to return a pointer to local variable, static variable and dynamically allocated memory as well.