sizeof和strlen对比

strlen()是用来求字符串长度的一个函数,sizeof()是用来求指定变量或者变量类型等所占内存大小的操作符。

这两个虽然都是量取长度的,但有本质的不同我们通过几个例子来看看!

1
2
3
4
5
char ss[]="0123456789";
printf("%dn",sizeof(ss));
printf("%dn",sizeof(*ss));


11 ss是数组,计算到’’一共10+1
1 *ss指第一个字符,所以为1

1
2
3
4
5
char* ss="0123456789";
printf("%dn",sizeof(ss));
printf("%dn",sizeof(*ss));


4 ss是指向字符串常量的字符指针,长整形的,所以为4
1 *ss是第一个字符,为1

1
2
3
4
5
char ss[100]="0123456789";
printf("%dn",sizeof(ss));
printf("%dn",strlen(ss));


100 ss再内存中规定的大小就是100
10 ss有10个字符,所以长度为10

1
2
3
4
5
int ss[100]="0123456789";
printf("%dn",sizeof(ss));
printf("%dn",strlen(ss));


理论上第一个应该输出400 因为100长度再内存中占用100×4
第二个错误 strlen后只能接字符指针