strlen与sizeof

2015-10-06  本文已影响109人  tomchan

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时,须写上实参表。

上一篇下一篇

猜你喜欢

热点阅读