我正在使用learn-c.org学习C,而在this page它说我可以使用
char name[] = "John"
在页面底部框架的自己的示例中,如果我这样做
char last_name[] = "Doe"
没有报告错误,但程序无法运行。它只会在我char last_name[4]
或更高的情况下运行...所以问题:
可以声明一个没有大小的数组,还是我需要知道数组将保存的最大值?那么第二个问题,如果我int array[10]
,如果我需要超过10个值会发生什么?
答案 0 :(得分:1)
可以声明一个没有大小的数组,或者我是否需要知道最大值 数组将保存的值?
取决于您是否初始化它。初始化时,编译器将为您计算元素。所以,这是有效的:
int a[] = { 0, 1, 2, 3 };
这有效地创建了一个包含4个元素的数组。如果提供大小和初始化数组,那么如果大小大于元素数,则相应地初始化第一个元素,并将其余元素初始化为其默认初始化值(0对于整数,null用于指针等。)。
如果尺寸小于元素数量,则表示错误。
如果您没有初始化,则必须声明大小。
有了这个:
char last_name[] = "Doe";
编译器创建一个包含4个字符的数组(其中一个是空终止符)。
如果我做int array [10],如果我需要超过10,会发生什么 值?
你无能为力。如果您需要超过10个,则需要更大的阵列。
答案 1 :(得分:-2)
你可以拥有一个固定大小的数组或一个指向数组的指针(以*开头),它可以有任何大小(最大限度)。
至于第二个问题,当数组离开它的边界时程序会崩溃。