Skip to content

LV090-指针定义形式总结

一、常见的定义

定义形式 含义
int p; 这是一个普通的整型变量 p,这个语句的含义就是定义了一个整型变量 p 。
int *p; - 首先从 p 处开始,先与 * 结合,所以说明 p 是一个指针;
- 然后再与 int 结合, 说明指针所指向的内容的类型为 int 型;

所以 p 是一个可以指向整型数据的指针变量,这个语句的含义就是定义了一个指向整型数据的指针变量 p。
int **p; - 首先从 p 开始, 先与 * 结合, 说是 p 是一个指针;
- 然后再与 * 结合, 说明指针所指向的元素是指针;
- 然后再与 int 结合, 说明该指针所指向的元素是整型数据。

所以, p 是一个 二级指针,指向整型数据,p 中可以存放一个地址,这个地址对应的内存区域是一个整数,这个语句的含义就是定义了一个可以指向整型数据的二级指针变量 p 。
int p[3]; - 首先从 p 处开始,先与 [] 结合,说明 p 是一个数组;
- 然后与 int 结合, 说明数组里的元素是整型的。

所以 p 是一个由整型数据组成的 数组,这个语句的含义就是定义了一个含有 3 个整型数据的数组 p 。
int *p[3]; - 首先从 p 处开始,先与 [] 结合,因为其优先级比 * 高,所以 p 是一个数组;
- 然后再与 * 结合,说明数组里的元素是指针类型;
- 然后再与 int 结合,说明指针所指向的内容的类型是整型的。

所以 p 是一个由 指向整型数据的指针所组成的数组,这个语句的含义就是,定义了一个含有 3 个元素的数组 p ,数组中每个元素都是一个指向整型数据的指针。
int (*p)[3]; - 首先从 p 处开始,先与 * 结合(因为添加了圆括号,改变了优先级),说明 p 是一个指针;
- 然后再与 [] 结合, 说明指针所指向的内容是一个数组;
- 然后再与 int 结合, 说明数组里的元素是整型的。

所以 p 是一个指向由整型数据组成的数组的指针,这个语句的含义就是,定义了一个指针变量 p ,它可以指向一个含有 3 个 int 类型元素的数组。

例如,int arr[3] = {1, 2, 3};int (*p)[3] = &arr;这里的 p 指向整个数组,p++将会移动3*sizeof(int)个字节
int p(int); - 首先,从 p 处起, 先与 () 结合, 说明 p 是一个函数;
- 然后进入 () 里分析,说明该函数有一个整型变量的参数;
- 然后再与外面的 int 结合, 说明 函数的返回值是一个整型数据

所以, p 是一个带有一个 int 形参且返回值为 int 类型的函数,这个语句的含义就是,定义了一个函数 p,这个函数有一个 int 类型的参数,返回值为 int 类型。
int *p(int); - 首先,从 p 处起, 先与 () 结合,说明 p 是一个函数;
- 然后进入 () 里分析,说明该函数有一个整型变量的参数;
- 然后再与外面的 int *结合, 说明函数的返回值是一个整型指针

所以, p 是一个带有一个 int 形参且返回值为 int * 类型的函数,这个语句的含义就是,定义了一个指针函数 p,这个函数有一个 int 类型的参数,返回值为 int *类型。
int (*p)(int); - 首先,从 p 处开始, 先与指针结合,说明 p 是一个指针;
- 然后与 () 结合,说明指针指向的是一个函数;
- 然后再与 () 里的 int 结合, 说明函数有一个 int 型的参数;
- 再与最外层的 int 结合, 说明函数的返回类型是整型。

所以 p 是一个指向有一个整型参数且返回类型为整型的函数的指针,这个语句的含义就是,定义了一个函数指针 p,这个函数指针指向一个函数,这个函数有一个 int 类型参数,且返回值为 int 类型。
int (*p[3])(int, int); - 首先从 p 处开始, 先与 [] 结合,因为其优先级比 * 高,所以 p 是一个数组;
- 然后再与 * 结合, 说明数组里的元素是指针类型;
- 然后与 () 结合, 说明指针指向的是一个函数;
- 然后再与 () 里的 int 结合, 说明函数有两个 int 型的参数;
- 再与最外层的 int 结合, 说明函数的返回类型是整型。

所以 p 是一个指向有两个整型参数且返回类型为整型的函数的指针数组,这个语句的含义就是,定义了一个有 3 个元素的数组 p ,数组中每个元素都是指针,指针指向含有两个 int 类型参数,且返回值为 int 类型的函数。
int *(* p(int))[3]; - 首先,从 p 开始, 先与 () 结合, 说明 p 是一个函数;
- 然后进入 () 里面,与 int 结合,说明函数有一个整型变量参数;
- 然后再与外面的 * 结合, 说明函数返回的是一个指针;
- 然后到最外面一层, 先与 [] 结合, 说明返回的指针指向的是一个数组,;
- 然后再与 * 结合, 说明数组里的元素是指针;
- 然后再与 int 结合, 说明指针指向的内容是整型数据。

所以 p 是一个参数为一个整型数据且返回一个指向由整型指针变量组成的数组的指针变量的函数。总的来说就是 p 是一个函数,这个函数含有一个int类型参数,返回值为一个指向 int *[3] 数组的指针(即一个包含3个元素的数组,数组的每个元素都是指向int类型数据的指针)。这里给一个示例帮助理解:
image-20260228094337107