sizeof与strlen的区别

strlen只计算字符串长度,不是类型占内存的大小

1. char *ss="0123456789";
   sizeof(ss)=4     //ss是指向字符串常量的字符指针,在32位机上所有指针
                 类型变量占用内存字节数都为4 
   sizeof(*ss)=1    //*ss是指第一个字符大小
 
2. char ss[]="0123456789";
   sizeof(ss)=11    //ss是数组,计算到“”位置1*(10+1)
   sizeof(*ss)=1    //ss是第一个字符
 
3. char ss[100]="0123456789";
   sizeof(ss)=100    //ss表示内存中预分配的大小100*1
   strlen(ss)=10     //它的内部实现是循环计算字符串长度,直到“”为止
 
4. int ss[100]="0123456789";
   sizeof(ss)=400    //ss表示内存中的大小4*100
   strlen(ss)       //错误,strlen参数只能是char*,且必须以“”结尾的
 
 
 
 
原文地址:https://www.cnblogs.com/zjiaxing/p/5542788.html