1.sizeof和strlen的使用示例:
2.对于字符串指针长度的查询:
代码示例:
char *AudioMode[7] = {"Type&","Mode&","Sample&","Bitrate&","Channel&","Save&","State&"};
char *aaaa = "12345678";
char c = '12345678';
int size_of_len,str_len_len,len;
size_of_len = sizeof(aaaa);
str_len_len = strlen(aaaa);
len = (sizeof(AudioModel)/sizeof(char *));
printf("size_of len = %d,str_len_len = %d\n",size_of_len,str_len_len);
printf("size of c = %d\n",sizeof(c));
printf("len = %d\n",len);
输出结果为:
size_of len = 4, str_len_len =8
size of c = 1
len = 7;
解析:
sizeof计算的都是类型的长度。如果是对象,则转换成类型,再计算类型的长度。在32位系统中。指针类型是32位,4个字节。所以对任何指针用sizeof结果都是4;
strlen(char*)函数求的是字符串的实际长度,它求得方法是从开始到遇到第一个'\0',如果你只定义没有给它赋初值,这个结果是不定的,它会从aa首地址一直找下去,直到遇到'\0'停止。
扩展
char aa[10];cout<<strlen(aa)<<endl; //结果是不定的
char aa[10]={'\0'}; cout<<strlen(aa)<<endl; //结果为0
char aa[10]="jun"; cout<<strlen(aa)<<endl; //结果为3
而sizeof()返回的是变量声明后所占的内存数,不是实际长度,此外sizeof不是函数,仅仅是一个操作符,strlen是函数。
sizeof(aa) 返回10
int a[10]; sizeof(a) 返回40 (根据语言int型 c 是两个字节 c++是四个 java 是两个)
⒈sizeof操作符的结果类型是size_t,它在头文件中typedef为unsigned int类型。
该类型保证能容纳实现所建立的最大对象的字节大小。
⒉sizeof是操作符(关键字),strlen是函数。
⒊sizeof可以用类型做参数,strlen只能用char*做参数,且必须是以''\0''结尾的。
sizeof还可以用函数做参数,比如:
short f();
printf("%d\n",sizeof(f()));
输出的结果是sizeof(short),即2。