让你不在害怕指针
指针是编程语言中的一种非常重要的概念,但很多人对指针的理解却停留在表面层面,导致在编程中出现各种错误和 Bug。本文将详细地介绍各种常见的指针类型,并一步一步地进行分析,让您不再害怕指针。
1. 普通变量
首先,让我们从一个普通的整型变量开始:
int p;
这只是一个普通的整型变量,没什么特别之处。
2. 指针变量
然后,让我们看看指针变量:
int* p;
这里的 p 不是一般的整型变量,而是一个指针变量。从变量名 p 开始,我们可以看到,首先是与 * 结合,这说明 p 是一个指针,然后再与 int 结合,说明指针所指向的内容的类型为整型。
3. 数组变量
下面,让我们看看数组变量:
int p[3];
这里的 p 不是一个普通的整型变量,而是一个数组变量。从变量名 p 开始,我们可以看到,首先是与 [] 结合,说明 p 是一个数组,然后再与 int 结合,说明数组里的元素是整型的。
4. 指针数组变量
接着,让我们看看指针数组变量:
int* p[3];
这里的 p 是一个数组,数组里的元素是指针类型,然后再与 int 结合,说明指针所指向的内容的类型为整型。
5. 指向数组的指针变量
下面,让我们看看指向数组的指针变量:
int(*p)[3];
这里的 p 是一个指针,指针所指向的内容是一个数组,然后再与 int 结合,说明数组里的元素是整型的。
6. 多级指针变量
然后,让我们看看多级指针变量:
int** p;
这里的 p 是一个指针,指针所指向的元素也是一个指针,然后再与 int 结合,说明该指针所指向的元素是整型数据。
7. 函数指针变量
最后,让我们看看函数指针变量:
int p(int);
这里的 p 是一个函数,函数有一个整型变量的参数,然后再与外面的 int 结合,说明函数的返回值是一个整型数据。
int(*p)(int);
这里的 p 是一个指针,指针指向的是一个函数,然后再与 () 结合,说明函数有一个整型变量的参数,最后再与最外层的 int 结合,说明函数的返回值是一个整型数据。
通过上面的分析,我们可以看到,指针的类型可以非常复杂,但只要我们遵循从变量名开始,根据运算符优先级结合,一步一步地分析,我们就可以完全理解复杂的指针类型。