您的位置:首页 > 其它

sizeof("string") 以及字符数组使用字符串初始化

2017-01-01 17:02 369 查看
1. sizeof 对于常量字符串求字节长度时,注意C会对常量字符串追加‘\0’这样一个NUL字符(末尾已经有NUL字符),所以会比所见常量字串长度大1

2. 在声明字符数组中使用常量字符串string初始化时,如果声明中未指定数组长度,注意数组长度为sizeof("string")

3. 在声明字符数组中使用常量字符串string初始化时,如果声明中指定了数组长度,且长度大于字符串长度,则剩余数组元素初始化为NUL字符

下面一段code可见其结果:

#include
#include

int main()
{
char str1[6] = "str";
char str2[] = "str";
char str3[] = "str\0";
char str4[6];
int i;

printf("%s: sizeof(st): %ld, sizeof(st\\0): %ld\n",
__func__, sizeof("st"), sizeof("st\0"));

for (i = 0 ; i < sizeof(str1); i++)
printf("str1[%d] = %c %s, ", i, str1[i], str1[i] == '\0' ? "is NUL": "");
printf("\n");

for (i = 0 ; i < sizeof(str2); i++)
printf("str2[%d] = %c %s, ", i, str2[i], str2[i] == '\0' ? "is NUL": "");
printf("\n");

for (i = 0 ; i < sizeof(str3); i++)
printf("str3[%d] = %c %s, ", i, str3[i], str3[i] == '\0' ? "is NUL": "");
printf("\n");

for (i = 0 ; i < sizeof(str4); i++)
printf("str4[%d] = %c, ", i, str4[i]);
printf("\n");

exit(EXIT_SUCCESS);
}


执行结果:
main: sizeof(st): 3, sizeof(st\0): 4

str1[0] = s , str1[1] = t , str1[2] = r , str1[3] =  is NUL, str1[4] =  is NUL, str1[5] =  is NUL, 

str2[0] = s , str2[1] = t , str2[2] = r , str2[3] =  is NUL, 

str3[0] = s , str3[1] = t , str3[2] = r , str3[3] =  is NUL, str3[4] =  is NUL, 

str4[0] =  , str4[1] = �, str4[2] = ], str4[3] = , str4[4] = �, str4[5] = ,
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  C sizeofstring
相关文章推荐