美文网首页
strlen与sizeof

strlen与sizeof

作者: tomchan | 来源:发表于2015-10-06 23:32 被阅读109次

    strlen

    strlen是函数

    头文件:<string.h>

    作用:计算字符串的长度,不包括'\0'在内

    strlen的参数只能是char* 且必须是以'\0'结尾的

    strlen(char*)函数求的是字符串的实际长度( 即从开始到遇到第一个'\0' )

    如果你只定义没有给它赋初值,返回的结果是不定的。

    char a[10];

    cout<<strlen(a)<<endl;  //结果不定

    const char a[10]="\0"; 

    cout<<strlen(a)<<endl; //输出0

    const char a[10]="abc";

    cout<<strlen(a)<<endl; //输出3

    sizeof

    sizeof是一个操作符(operator)

    sizeof()返回的是变量声明后所占的内存数,不是实际长度

    char str[20]="0123456789";

    int a=strlen(str); //a=10; 实际长度

    int b=sizeof(str); //b=20; 声明后占用的内存

    数组的sizeof

    数组的sizeof值等于数组所占用的内存字节数。

    1)当字符数组表示字符串时,其sizeof值将’/0’计算进去。

    char a[10];

    sizeof(a)  //结果为10

    char n[] = "abc";

    sizeof(n) //结果为4

    2)当数组为形参时,其sizeof值相当于指针的sizeof值。

    void func(char a[3])

    {

    int c = sizeof(a); //c = 4,因为这里a不在是数组类型,而是指针,相当于char *a。

    }

    void func(char b[])

    {

    int c = sizeof(b); //c = 4,理由同上。

    }

    函数的sizeof

    sizeof也可对一个函数调用求值,其结果是函数返回值类型的大小,函数并不会被调用。

    对函数求值的形式:sizeof(函数名(实参表))

    1)不可以对返回值类型为空的函数求值。

    2)不可以对函数名求值。

    3)对有参数的函数,在用sizeof时,须写上实参表。

    相关文章

      网友评论

          本文标题:strlen与sizeof

          本文链接:https://www.haomeiwen.com/subject/wrxncttx.html