sizeof与strlen使用,字符串指针数组
2013-03-22 11:42
281 查看
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。
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。
相关文章推荐
- 字符串,字符指针和字符数组的sizeof和strlen
- C++11 基础之字符数组,字符串,字符指针通过sizeof、strlen求值
- 使用字符串指针变量和字符数组的区别
- 补补基础知识,关于字符串,字符数组,CString型字符串,strlen,sizeof
- C和指针之字符串之strlen、strcpy、 strcat、strcmp使用总结
- C++ 数组与字符串长度sizeof()、strlen()、string的length()和size()
- 使用快速排序算法对字符串数组进行排序(复习指向指针的指针以及指针数组的使用)
- C中 字符数组和字符串以及strlen 和sizeof
- 一维数组 与指针 sizeof strlen int char
- 二十五、数组、指针和字符串:数组的声明和使用
- 字符数组 字符指针 sizeof strlen 的区别
- char字符串数组与string之间的转换,以及sizeof,strlen,length的区别
- 【c语言】strlen与sizeof对数组和指针的求法
- 内存,指针定义使用字符串相关函数数组指针
- 字符数组,字符指针,sizeof,strlen总结
- sizeof(变量名)与strlen(字符数组名)的使用区别
- 字符数组,字符指针,sizeof,strlen总结
- Swift中对C语言接口缓存的使用以及数组、字符串转为指针类型的方法
- strlen /sizeof/ 0,'\0','0'中的陷阱+补充字符串字符数与数组大小相等
- 计算字符串的长度及sizeof与strlen、gets与scanf、字符数组与字符串