sizeof和strlen区别:
- sizeof 是一个运算符,用于计算变量或类型所占用的内存字节数,sizeof 会将空字符 ‘\0’ 计算在内,而 strlen 不会将空字符 ‘\0’ 计算在内。
- strlen 是一个函数,用于计算字符串中字符的个数,但不包括结束字符(即 null 字符,sizeof 会计算到字符串最后一个空字符 ‘0’ 并结束,而 strlen 如果遇到第一个空字符 ‘\0’ 的话就会停止并计算遇到的第一个空字符 ‘\0’ 前面的长度。
示例
char arr1[] = {'a','b','c','d','e','\0'};
char arr2[] = { 'a','b','c','d','e'};
char arr3[] = "abcde";
char arr4[8] = "abcde";
printf("arr1-strlen=%d\n", strlen(arr1));
printf("arr1-sizeof=%d\n", sizeof(arr1));
printf("arr2-strlen=%d\n", strlen(arr2));
printf("arr2-sizeof=%d\n", sizeof(arr2));
printf("arr3-strlen=%d\n", strlen(arr3));
printf("arr4-sizeof=%d\n", sizeof(arr4));
printf("arr4-strlen=%d\n", strlen(arr4));
未指定字符数组的长度用strlen计算会出现什么结果
如果未指定字符数组的长度,那么在使用 strlen 函数计算字符串长度时,会出现随机值。这是因为 strlen 函数在计算字符串长度时,遇到 ‘\0’ 字符时会停止计算,而未指定字符数组的长度时,编译器会自动在数组末尾添加一个 ‘\0’ 字符,以便 strlen 函数能够正确地计算字符串长度。如果未添加 ‘\0’ 字符,则 strlen 函数会一直计算下去,直到遇到内存中的 ‘0’ 字符才停止计算,从而导致随机值的出现 。
指定字符数组的长度用strlen计算会出现什么结果
如果指定了字符数组的长度,那么在使用 strlen 函数计算字符串长度时,会返回指定的长度。这是因为 strlen 函数在计算字符串长度时,遇到 ‘0’ 字符时会停止计算,而在指定了字符数组的长度后,编译器会自动在数组末尾添加相应个数的 ‘\0’ 字符,以便 strlen 函数能够正确地计算字符串长度 。
字符小于字符数组的长度用strlen计算会出现什么结果
如果字符数组的长度大于字符的数量,那么使用 strlen 函数计算字符串长度时,会返回指定的长度。这是因为 strlen 函数在计算字符串长度时,遇到 ‘0’ 字符时会停止计算,而在指定了字符数组的长度后,编译器会自动在数组末尾添加相应个数的 ‘\0’ 字符,以便 strlen 函数能够正确地计算字符串长度 。
char arr2[] = { ‘a’,‘b’,‘c’,‘d’,‘e’}和char arr3[] = "abcde"的区别
char arr2[] = { ‘a’,‘b’,‘c’,‘d’,‘e’} 和 char arr3[] = “abcde” 的区别在于,arr2 是一个字符数组,而 arr3 是一个字符串。在 C 语言中,字符串以 ‘\0’ 结尾,因此 arr2 的长度为 5,而 arr3 的长度为 6。sizeof 运算符返回整个数组所占用的内存字节数,因此 arr2 的大小为 5*sizeof(char),而 arr3 的大小为 sizeof(“abcde”)。