在C语言中,你必须声明数组的长度:
int myArray[100];
但是当你处理char
和字符串时,长度可以留空:
char myString[] = "Hello, World!";
编译器是否通过查看字符串来为您生成长度?
int myArray[100];
但是当你处理char
和字符串时,长度可以留空:
char myString[] = "Hello, World!";
编译器是否通过查看字符串来为您生成长度?
这不仅适用于char
。例如,您可以这样做:
int myNumbers[] = { 5, 10, 15, 20, 42 };
这与编写以下代码等价:
int myNumbers[5] = { 5, 10, 15, 20, 42 };
使用字符串字面值初始化char
数组是一种特殊情况。
是的,它包括终止符'\0'
在内的长度。
编译器是否通过查看字符串来为您生成长度?
是的,这正是它能够工作的原因。编译器看到了常量值,并且可以填充长度,因此您不必自己进行操作。
如果你做了类似以下的操作,情况是一样的...
int x[] = {1,2,3};
字符串字面量的大小(不是像 strlen
一样的长度)用于调整正在初始化的数组的大小。
您可以使用带有嵌入空字节的字符串字面量来初始化字符数组。结果数组将具有第一个(或第二个,...)null 之后的所有字节的大小。
char array[] = "foo\0bar\0baz\0quux";
/* sizeof array is 17
** array[3] is 0
** printf("%s\n", array + 4); prints bar
** array[11] is 0
** printf("%s\n", array + 12); prints quux
** array[16] == 0
*/
int
数组的长度:int a[] = {1,2,3};
- mhyfritz