sizeof与strlen使用,字符串指针数组

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。

 

 


 




 

posted @ 2013-03-22 11:42  kaloha  阅读(847)  评论(0编辑  收藏  举报