以下对一维数组a的正确说明是( )
A)char a(10); B) int a[];
C)int k=5,a[k]; D)char a[3]={‘a’,’b’,’c’};
A的括号不对!!!
在C语言中,数组的大小必须是一个编译时常量,也就是说,它必须在编译时就已经确定。变量k的值在运行时才确定,因此不能用来声明数组的大小。
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语言中初始值要为常量,...
用户登录可进行刷题及查看答案
登录后提交答案