以下对一维数组a的正确说明是( )
A)char a(10); B) int a[];
C)int k=5,a[k]; D)char a[3]={‘a’,’b’,’c’};
char a(10);
这是不正确的。数组的声明应该使用方括号 [] 来指定数组的大小,而不是圆括号 ()。正确的声明方式应该是 char a[10];。
[]
()
char a[10];
int a[];
这是不完整的声明,不正确。虽然可以声明一个未初始化大小的数组,但需要通过其他方式来指定其大小(如在后续代码中赋值或指定初始化)。例如,int a[5]; 或 int a[] = {1, 2, 3, 4, 5}; 都是有效的数组声明。
int a[5];
int a[] = {1, 2, 3, 4, 5};
int k = 5, a[k];
这是不正确的。声明数组时,数组的大小必须是常量表达式。k 是变量,因此无法用它来定义数组的大小。正确的方式是要么指定一个常量数值,例如 int a[5];,要么在数组初始化时直接指定数组的元素。
k
char a[3] = {'a', 'b', 'c'};
这是正确的。这个声明是有效的,表示声明了一个字符数组 a,包含 3 个元素,分别是 'a'、'b' 和 'c'。
a
'a'
'b'
'c'
A的括号不对!!!
在C语言中,数组的大小必须是一个编译时常量,也就是说,它必须在编译时就已经确定。变量k的值在运行时才确定,因此不能用来声明数组的大小。
声明int k = 5;是正确的,但是紧接着的a[k];是错误的,因为k是一个变量,不是常量表达式。正确的做法是使用malloc来动态分配数组,或者在编译时就确定数组的大小,例如:
int k = 5;
a[k];
malloc
int k = 5; // 定义变量k int *a = malloc(k * sizeof(int)); // 动态分配数组
或者,如果你知道数组的大小不会改变,你可以在编译时就确定它:
const int k = 5; // 定义常量k int a[k]; // 使用常量k来声明数组
请注意,使用malloc动态分配的数组需要在使用完毕后使用free函数释放内存,以避免内存泄漏。而编译时常量大小的数组则不需要手动释放内存
free
谭浩强第五版P140,C语言不允许对数组的大小做动态定义。C语言中初始值要为常量,不允许对数组的大小做动态定义。 C语言中初始值要为常量,否则就要动态申请内存
想要方括号为空,后边必须有初始化
d
最开始的c是不允许动态声明数组的,后来随着标准的增加可以了,但是尽量不要这样
C语言中初始值要为常量,不允许对数组的大小做动态定义
xqs 回复 花妖: 为什么DEV C++可以随便用?
一维数组的定义和常见格式
谭浩强第五版P140,C语言不允许对数组的大小做动态定义
方括号中必须是常量
C怎么错了呢???
要有初始值是吗?
Sicrve 回复 预热器: C语言中初始值要为常量,否则就要动态申请内存
D
C语言中初始值要为常量,...
用户登录可进行刷题及查看答案
登录后提交答案