单选题
1、第218题 (1.0分) 题号:191 设有说明int ( )[M];其中标识符ptr是()。
A
M个指向整型变量的指针
B
指向M个整型变量的函数指针
C
一个指向具有M个整型元素的一维数组的指针
D
具有M个指针元素的一维指针数组,每个元素都只能指向整型量
答案解析
正确答案:C
解析:
这道题考查的是 C 语言中**数组指针**(Pointer to Array)与**指针数组**(Array of Pointers)声明语法的区别。虽然题目中的说明 `int ( )[M]` 存在排版缺失(通常应为 `int (*ptr)[M];`),但结合选项和常见的考点逻辑,我们可以推断其意图是考察 `int (*ptr)[M]` 这种形式。
### 详细解析:
1. **语法结构分析**:
在 C 语言中,声明 `int (*ptr)[M];` 的含义如下:
* `ptr` 是一个标识符。
* `*ptr` 表示 `ptr` 是一个指针。
* `(*ptr)[M]` 表示这个指针指向一个包含 `M` 个元素的一维数组。
* `int` 表示该数组中的每个元素都是整型(`int`)。
因此,`ptr` 是一个**指向具有 M 个整型元素的一维数组的指针**,简称“数组指针”。
2. **选项辨析**:
* **A. M个指向整型变量的指针**
* 这描述的是**指针数组**。
* 对应的声明应该是:`int *ptr[M];`
* 这里 `[]` 的优先级高于 `*`,所以 `ptr` 先与 `[M]` 结合,表示 `ptr` 是一个有 M 个元素的数组,数组的每个元素是 `int *`(指向整型的指针)。这与题意不符。
* **B. 指向M个整型变量的函数指针**
* 函数指针的声明通常包含参数列表,例如 `int (*ptr)(int, int);`。
* 题目中没有函数调用的括号 `()` 作为参数列表的特征,且 `int [M]` 是数组类型,不是函数类型。故排除。
* **C. 一个指向具有M个整型元素的一维数组的指针**
* 这正是 `int (*ptr)[M];` 的标准定义。
* `ptr` 本身是一个指针,它指向的对象是一个整体,即一个长度为 M 的 `int` 数组。
* **这是正确答案。**
* **D. 具有M个指针元素的一维指针数组,每个元素都只能指向整型量**
* 这同样描述的是**指针数组**,与选项 A 含义相同。
* 对应的声明是 `int *ptr[M];`。故排除。
### 总结记忆技巧:
* **`int *ptr[M]`**:`[]` 优先级高,`ptr` 是数组,存的是指针 -> **指针数组**。
* **`int (*ptr)[M]`**:`()` 强制优先级,`*ptr` 是指针,指向数组 -> **数组指针**。
题目中的写法 `int ( )[M]` 虽不完整,但根据上下文语境及选项 C 的描述,显然是在考察**数组指针**的概念。
**正确答案:C**
题目纠错
c语言选择判断题库
相关题目
单选题
1、第41题 (1.0分) 题号:500 下列程序段的输出结果为()。 int x=3,y=2; printf(”%d”,(x-=y,x*=y+8/5));
单选题
1、第40题 (1.0分) 题号:632 以下叙述正确的是()。
单选题
1、第39题 (1.0分) 题号:94 在C语言中,能代表逻辑值”真”的是()。
单选题
1、第38题 (1.0分) 题号:151 以下程序的运行结果是()。
单选题
1、第37题 (1.0分) 题号:693 以下各选项企图说明一种新的类型名,其中正确的是()。
单选题
1、第36题 (1.0分) 题号:509 int a=1,b=2,c=3; if( )a=b; if( )a=c; 则a的值为()。
单选题
1、第35题 (1.0分) 题号:571 以下叙述正确的是()。
单选题
1、第34题 (1.0分) 题号:550 不仅可将C源程序存在磁盘上,还可将数据按数据类型分别以什么的 形式存在磁盘上()。
单选题
1、第33题 (1.0分) 题号:523 函数的形式参数隐含的存储类型说明是()。
单选题
1、第32题 (1.0分) 题号:131 若k为int型变量,则以下程序段的执行结果是()。k=-8567; printf(”|%06D|\n”,k);
