单选题
1、第256题 (1.0分) 题号:547 int (*p)[6]; 它的含义为()。
A
具有6个元素的一维数组
B
定义了一个指向具有6个元素的一维数组的指针变量
C
指向整型指针变量
D
指向6个整数中的一个的地址
答案解析
正确答案:B
解析:
这道题考查的是 C 语言中**数组指针**(Pointer to Array)的定义与理解。
### 核心解析
声明语句 `int (*p)[6];` 可以拆解分析如下:
1. **括号的作用**:`()` 的优先级高于 `[]`。因此,`*p` 先结合,说明 `p` 是一个**指针**。
2. **指向的内容**:去掉 `*p` 后,剩下 `int [6]`。这表示该指针指向的是一个包含 6 个 `int` 类型元素的**数组**。
3. **综合含义**:`p` 是一个指针变量,它指向一个拥有 6 个整型元素的一维数组。这种指针被称为“数组指针”。
### 选项分析
* **A. 具有6个元素的一维数组**
* **错误**。如果是定义数组,写法应为 `int p[6];`。题目中有 `*` 和括号,说明是指针,而非数组本身。
* **B. 定义了一个指向具有6个元素的一维数组的指针变量**
* **正确**。符合上述拆解分析,`p` 是指针,指向类型为 `int [6]` 的数组。
* **C. 指向整型指针变量**
* **错误**。指向整型指针的写法应为 `int **p;` 或 `int *(*p);`。
* **D. 指向6个整数中的一个的地址**
* **错误**。指向单个整数的指针写法为 `int *p;`。虽然数组名在某种程度上可以退化为指向首元素的指针,但 `int (*p)[6]` 的类型本质是指向整个数组块,步长(stride)是 `6 * sizeof(int)`,而不是单个 `int` 的大小。
### 易混淆点对比
| 声明 | 名称 | 含义 |
| :--- | :--- | :--- |
| `int *p[6];` | 指针数组 | `p` 是一个数组,包含 6 个元素,每个元素都是指向 `int` 的指针。 |
| `int (*p)[6];` | 数组指针 | `p` 是一个指针,指向一个包含 6 个 `int` 的数组。 |
**记忆技巧**:
* `[]` 优先级高,先结合成数组,再被 `*` 修饰 $\rightarrow$ 数组里存的是指针 $\rightarrow$ **指针数组**。
* `()` 强制 `*` 先结合,先成为指针,再指向数组 $\rightarrow$ **数组指针**。
### 结论
正确答案是 **B**。
题目纠错
c语言选择判断题库
相关题目
单选题
1、第3题 (1.0分) 题号:187 经过下列的语句 int j,a[10],*p;定义后,下列语句中合法的是()。
单选题
1、第2题 (1.0分) 题号:681 以下运算符中优先级最低的是()。
单选题
1、第1题 (1.0分) 题号:513 int a[10];合法的数组元素的最小下标值为()。
单选题
1、〖第40题〗740) 若要打开A盘上user子目录下名为abc.txt的文本文件进行读、写操作,
单选题
1、〖第39题〗560) 能将高级语言编写的源程序转换为目标程序的是()。
单选题
1、〖第38题〗77) 以下描述中,正确的是()。
单选题
1、〖第37题〗528) 对于void类型函数,调用时不可作为()。
单选题
1、〖第36题〗88) 两个指针变量不可以()。
单选题
1、〖第35题〗567) 以下叙述中正确的是 ()。
单选题
1、〖第34题〗454) 以下函数调用语句中实参的个数是()。 func((e1,e2),(e3,e4,e5));
