您的位置:首页 > 其它

sizeof与strlen函数的区别

2014-12-23 23:19 211 查看
strlen是函数,而sizeof是算符

strlen函数,用来求字符串的长度,sizeof函数是用来求指定变量或变量类型(操作数)等所占用内存的大小且存储大小由操作数的类型决定。

  若操作数具有类型char、unsigned char或signed char,其结果等于1。

ANSI C正式规定字符类型为1字节。 其他类型:int(4)、unsigned int(4) 、short int(2)、unsigned short(2) 、longint(4) 、unsigned long(4)、float(4)、double(8)、longdouble(8)

当操作数是指针时,sizeof依赖于编译器。例如Microsoft C/C++7.0中,near类指针字节数为2,far、huge类指针字节数为4。一般Unix的指针字节数为4,
一般来说指针字节数为4。

例1:

int*p; int a[5];

p= a;

sizeof(p)的结果是4。

例2:

const char*pstars[]={"aa","bb","cc","dd"};

constint starCount=size of pstars/sizeof pstars[0];

sizeofpstars[0]的结果是4

当操作数具有数组类型时,其结果是数组的总字节数。

例如:int a[12]; sizeof(a)的结果是12 * 4 = 48。

联合类型操作数的sizeof是其最大字节成员的字节数。结构类型操作数的sizeof是这种类型对象的总字节数,包括任何垫补在内。

  让我们看如下结构:

  struct {char b; double x;} a;

  vc6.0结果为16

对于静态数组处理:

char str[20]="0123456789";

strlen(str)=10; //表示数组中字符串的长度

sizeof(str)=20; //表示数组变量分配的长度

对于指针处理:

char *str="0123456789";

strlen(str)=10; //表示字符串的长度

sizeof(str)=4; //表示指针变量的所占内存大小

sizeof(*str)=1; //表示'0'这个字符变量的所占内存大小

对于数组:

charx[]="string";

x[0]=0; x[1]='\0';

计算:sizeof(x) = 7 strlen(x) =0
声明x的时候x里面存储的是"string\0",最后的\0是结束符,所以sizeof(x)就是7。

而\0的asccii码值为0,strlen(x)是计算到\0位置,strlen(x)也就是0了
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: