一.需要明确strlen()是个字符串函数,是统计一个字符串从开始到"/0"(字符串结束)之间字符的个数(不包含"/0")。字符串可以是char *str1 = "asdaff"; 也可以是字符数组形式 char str2[] = "asdadf"; 都可以统计字符数量。
二.sizeof是类型说明符,数组名或表达式,不是个函数,是判断数据类型长度的关键字。
为了方便理解和记忆,给出几个典型例子。
char *str1 = "asdaf"; strlen(str1) = 5 sizeof(str1) = 8(仅仅是个指针)
char str2[10] = "asdfa"; strlen(str2) = 5 sizeof(str2) = 10
char str3[] = "asdfa"; strlen(str3) = 5 sizeof(str3) = 6(最后加个'\0')
int array1[] = {10, 15, 23}; sizeof(array1) = 12
int array2[5] = {10, 15, 23}; sizeof(str1) = 20
第一次写,写的感觉好乱。。。。。
再次补充,写了一个例子
3 int main(int ac, char **av)
4 {
5 char ac0[] = "abcdefghl";
6 char ac1[] = {'a', 'b', 'c', 'd', 'e', 'f', 'g','h','l'};
7 char *ac2 = "abcdefghl";
8
9 printf("%d\n", strlen(ac0));
10 printf("%d\n", strlen(ac1));
11 printf("%d\n", strlen(ac2));
12 printf("%d\n", sizeof(ac0));
13 printf("%d\n", sizeof(ac1));
14 printf("%d\n", sizeof(ac2));
15
16 return 0;
17 }
结果为
9
9
9
10
9
8
可以自己细细揣摩一下