C 关于字符串文字和数组元素数的一些结论,请给出您的看法
我写了以下代码:C 关于字符串文字和数组元素数的一些结论,请给出您的看法,c,C,我写了以下代码: #define ELEMENTS_NUMBER_OF(array) (sizeof(array) / sizeof(array[0])) printf("\"abcdef\"[0]: %c\n", "abcdef"[0]); printf("elements number of \"abcdef\" is %d\n", ELEMENTS_NUMBER_OF("abcdef")); 我的结论是: 字符串literal“abcdef”是一个char数组 sizeof(a)/s
#define ELEMENTS_NUMBER_OF(array) (sizeof(array) / sizeof(array[0]))
printf("\"abcdef\"[0]: %c\n", "abcdef"[0]);
printf("elements number of \"abcdef\" is %d\n", ELEMENTS_NUMBER_OF("abcdef"));
我的结论是:
“abcdef”
是一个char
数组李>
sizeof(a)/sizeof(a[0])
可用于计算任何类型的数组长度“abcdef”
将存储在类型为char
元素和静态存储持续时间的数组中a
是数组(甚至是VLA),sizeof(a)/sizeof(a[0])
计算a
的元素数sizeof a
生成数组a
的长度,以字节为单位。注意,如果a
是指向动态分配内存的指针,sizeof
将产生指针类型大小,并且当应用于声明具有数组类型的参数时,sizeof
将产生相应指针类型的大小@AndersK Oblig:仅供参考,您应该用括号括住宏定义,这样您就不会遇到操作顺序问题。