1 /*
2 明确概念:
3 1)sizeof是一个关键字,目的是求某类型或数据占用实际内存的字节数;对于结构体类型,需考虑结构体对其方式
4 2)strlen是一个函数,目的是求字符串的长度,从字符串第一个元素到第一个'\0'之间的所有数据
5 如下例所示:
6 有两种表示字符串的方法:字符串形式和字符形式
7 有两种定义数组的方法:设定数组长度和不设定数组长度
8 则:当固定数组长度时:
9 sizeof的值为数据的总字节数,即sizeof(str1) == sizeof(str2) == 20;
10 strlen的长度为实际字符串的长度,且不包含结束符'\0',即strlen(str1) == strlen(str2) == 11;
11 当不固定数组长度时:
12 sizeof用法同上,所以sizeof(str3) == sizeof(str4) == 13(包含结束符'\0')
13 strlen会被字符串中的'\0'所截断;strlen(str3) == strlen(4) == 5;
14 */
15 #include <stdlib.h>
16 #include <string.h>
17 #include <stdio.h>
18
19 int main(void)
20 {
21 char str1[20] = {"Hello world"};
22 char str2[20] = {'H', 'e', 'l', 'l', 'o', ' ', 'w', 'o', 'r', 'l', 'd', '\0'};
23
24 char str3[] = {"Hello\0 world"};
25 char str4[] = {'H', 'e', 'l', 'l', 'o', '\0', ' ', 'w', 'o', 'r', 'l', 'd', '\0'};
26
27 printf("sizeof: str1 2 3 4:%8d %8d %8d %8d\n", sizeof(str1), sizeof(str2), sizeof(str3), sizeof(str4));
28 printf("strlen: str1 2 3 4:%8d %8d %8d %8d\n", strlen(str1), strlen(str2), strlen(str3), strlen(str4));
29
30 return 0;
31 }
32
执行结果: