AI智能推荐题库-试题通 AI智能整理导入题库-试题通
×
首页 题库中心 c语言选择判断题库 题目详情
CA4E3A01C46000013755684012D01E55
c语言选择判断题库
379
单选题

9.以下数组定义中不正确的是()。

A
 int a[2][3];
B
 int b[][3]={0,1,2,3};
C
 int c[100][100]={0};
D
 int d[3][]={{1,2},{1,2,3},{1,2,3,4}};

答案解析

正确答案:D

解析:

在 C 语言中,二维数组的定义和初始化需要遵循特定的语法规则,主要涉及内存分配和维度确定的逻辑。 对于选项 A `int a[2][3];`,这是最标准的二维数组定义方式,明确指定了行数为 2,列数为 3,编译器可以据此分配固定的内存空间,因此该定义是正确的。 对于选项 B `int b[][3]={0,1,2,3};`,在初始化二维数组时,如果提供了初始值列表,第一维(行数)可以省略,编译器会根据初始值的个数和第二维(列数)的大小自动计算行数。这里列数为 3,初始值有 4 个,编译器会将其处理为 2 行(第一行 `{0,1,2}`,第二行 `{3,0,0}` 补零),因此该定义也是正确的。 对于选项 C `int c[100][100]={0};`,这是一个合法的静态初始化。它定义了一个 100x100 的数组,并将第一个元素初始化为 0,其余元素默认也会初始化为 0。虽然数组较大,但在语法上完全正确。 对于选项 D `int d[3][]={{1,2},{1,2,3},{1,2,3,4}};`,这里省略了第二维(列数)。在 C 语言中,**二维数组的第二维(列宽)是必须指定的**,不能省略。这是因为编译器需要知道每一行有多少个元素,才能正确计算内存地址偏移量(即确定下一行从哪里开始)。如果省略列数,编译器无法确定每行的边界,也就无法为数组分配连续的内存空间。即使给出了初始值,C 语言标准也不允许通过这种方式推导列数(这与省略行数不同,因为行是可以动态增加的,但列宽必须固定以维持数组结构的规整性)。因此,该定义是错误的。 综上所述,不正确的数组定义是 D。 答案:D
题目纠错
c语言选择判断题库

扫码进入小程序
随时随地练习

关闭登录弹窗
专为自学备考人员打造
勾选图标
自助导入本地题库
勾选图标
多种刷题考试模式
勾选图标
本地离线答题搜题
勾选图标
扫码考试方便快捷
勾选图标
海量试题每日更新
波浪装饰图
欢迎登录试题通
可以使用以下方式扫码登陆
APP图标
使用APP登录
微信图标
使用微信登录
试题通小程序二维码
联系电话:
400-660-3606
试题通企业微信二维码