C语言——strlen()和sizeof的区别

strlen()和sizeof()的区别:

  strlen()——>C字符串库函数,返回字符串的真实长度。它是从内存某位置开始扫描,直到碰到结束符'\0'停止,返回计数器值。

  sizeof()——>操作符,返回的是变量声明后“占用”的内存大小,可能不是实际大小。

    int num;

    sizeof(num);  返回num占用内存大小。也可写作sizeof num (当后面是变量名时,可不加括号。)

    sizeof(int);  返回int型数据占用内存大小。(当后面是类型名时,一定要加括号。)

 

下面的例子很好:

#import <Foundation/Foundation.h>

int main(int argc, const char * argv[])
{

    @autoreleasepool {
        
        char arr1[] = "wanger";
        NSLog(@"strlen:%lu___sizeof:%lu",strlen(arr1),sizeof(arr1));
        /*
         strlen(arr1)————> 返回arr1里存储的字符串“wanger”的实际长度。
         sizeof(arr1)————> 返回数组arr1声明后占用的内存大小。(虽有6个字符,但系统会自动加结束符'\0',所以为7)
         */
        
        
        char arr2[10] = "wanger";
        NSLog(@"strlen:%lu___sizeof:%lu",strlen(arr2),sizeof(arr2));
        /*
         sizeof(arr2)————> 数组arr2声明时系统给它分配了10个字节。
         
         */
        char *p = "wanger";
        NSLog(@"strlen:%lu___sizeof:%lu",strlen(p),sizeof(p));
        /*
         注意:sizeof(p)————> 它的意思是返回指针变量p的长度,我们知道指针变量的长度不因指针变量类型而异,它只跟系统有关。
         
         */
        
    
    }
    return 0;
}

 

posted @ 2015-02-25 13:38  &王先生  阅读(570)  评论(0编辑  收藏  举报