sizeof("string") 以及字符数组使用字符串初始化
2017-01-01 17:02
369 查看
1. sizeof 对于常量字符串求字节长度时,注意C会对常量字符串追加‘\0’这样一个NUL字符(末尾已经有NUL字符),所以会比所见常量字串长度大1
2. 在声明字符数组中使用常量字符串string初始化时,如果声明中未指定数组长度,注意数组长度为sizeof("string")
3. 在声明字符数组中使用常量字符串string初始化时,如果声明中指定了数组长度,且长度大于字符串长度,则剩余数组元素初始化为NUL字符
下面一段code可见其结果:
执行结果:
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] = ,
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] = ,
相关文章推荐
- 有一个字符数组的内容为:"student a am i",请你将数组的内容改为"i am a student". 要求: 不能使用库函数。只能开辟有限个空间(空间个数和字符串的长度无关)。
- 有一个字符数组的内容为:"student a am i",请你将数组的内容改为"i am a student". 要求: 不能使用库函数。只能开辟有限个空间(空间个数和字符串的长度无关)。
- 有一个字符数组的内容为:"student a am i",请你将数组的内容改为"i am a student". 要求: 不能使用库函数。只能开辟有限个空间(空间个数和字符串的长度无关)。
- 字符串的存储方式,以及sizeof()(字符数组,字符指针,Sizeof总结)
- C中 字符数组和字符串以及strlen 和sizeof
- 有一个字符数组的内容为:"student a am i",请你将数组的内容改为"i am a student". 要求: 不能使用库函数。只能开辟有限个空间(空间个数和字符串的长度无关)。
- 字符数组的定义、初始化及引用以及一些常用的字符串处理函数
- 有一个字符数组的内容为:"student a am i",请你将数组的内容改为"i am a student". 要求: 不能使用库函数。只能开辟有限个空间(空间个数和字符串的长度无关)。
- 有一个字符数组的内容为:"student a am i",请你将数组的内容改为"i am a student". 要求: 不能使用库函数。只能开辟有限个空间(空间个数和字符串的长度无关)。
- 字符串和字符数组的区别以及sizeof和strlen的区别
- 有一个字符数组的内容为:"student a am i",请你将数组的内容改为"i am a student". 要求: 不能使用库函数。只能开辟有限个空间(空间个数和字符串的长度无关)。
- 有一个字符数组的内容为:"student a am i",请你将数组的内容改为"i am a student". 要求: 不能使用库函数。只能开辟有限个空间(空间个数和字符串的长度无关)。 提交
- sizeof对字符数组字符串使用
- 有一个字符数组的内容为:"student a am i",请你将数组的内容改为"i am a student". 要求: 不能使用库函数。只能开辟有限个空间(空间个数和字符串的长度无关)
- char字符串数组与string之间的转换,以及sizeof,strlen,length的区别
- 字符数组-返回字符串中的某个子串的开始位置,不使用string头文件-C
- cpp如何快速安全地将文件读入字符串string或字符数组vector<string>的方法
- 对字符数组,字符指针,字符串常量以及其sizeof的一些总结
- C 语言 实现 字符串 分割 函数(返回"二维字符数组",及分割后的字符数组的长度)
- 字符串相互转字符数组 string byte 数组 array of byte