sizeof、strlen

原创 2015年07月10日 14:35:50
一、sizeof

        sizeof(...)是运算符,sizeof操作符的结果类型是size_t,它在头文件中typedef为unsigned int类型,是以字节为单位进行计数的。所以位域成员不

能用sizeof进行计算参数可以是数组、指针、类型、对象、函数等。

       功能是:获得保证能容纳实现所建立的最大对象的字节大小。

       由于在编译时计算,因此sizeof不能用来返回动态分配的内存空间的大小。实际上,用sizeof来返回类型以及静态分配的对象、结构或数组所占的

空间,返回值跟对象、结构、数组所存储的内容没有关系。


        具体而言,当参数分别如下时,sizeof返回的值表示的含义如下:

数组——编译时分配的数组空间大小;

指针——存储该指针所用的空间大小(存储该指针的地址的长度,是长整型,应该为4 字节byte);

类型——该类型所占的空间大小;

对象——对象的实际占用空间大小;

函数——函数的返回类型所占的空间大小。函数的返回类型不能是void。


例如:

char a[] = "hello world";
char *p = a;
cout<< sizeof(a) << endl; // 12 字节
cout<< sizeof(p) << endl; // 4 字节


注意当数组作为函数的参数进行传递时,该数组自动退化为同类型的指针。

void Func(char a[100])
{
cout<< sizeof(a) << endl; // 4 字节而不是 100 字节
}




二、strlen

头文件:string.h

函数: int strlen(char *s);

格式:strlen (字符数组名、指针,且必须是以'\0'结尾的

功能:计算字符串s的(unsigned int型)长度,不包括'\0'在内。


例如:

int ac[10];

cout<<sizeof(ac)<<endl;(结果是40  byte)

cout<<strlen(ac)<<endl; (ac相当于一个指针,但是strlen只能接受char*类型,所以编译时出错)


char aa[10]={'\0'}; 

cout<<strlen(aa)<<endl; //结果为0


class X{ int i; int j; char k;};X x;

cout<<sizeof(X)<<endl; 结果 12 ===》内存补齐

cout<<sizeof(x)<<endl; 结果 12 同上


char szPath[MAX_PATH]

如果在函数内这样定义,那么sizeof(szPath)将会是MAX_PATH,但是将szPath作为函数参数时,sizeof(szPath)却会是4(指针大小)


char ca1[] = {‘C’,'++' };

char ca2[] = {‘C’,'++' ,‘\0’};

          故strlen(ca1)的值未定义,而strlen(ca2)=2。



版权声明:如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!本文为博主原创文章,转载请注明链接!

sizeof和strlen的区别

  • 2014年11月27日 23:41
  • 29KB
  • 下载

Sizeof与Strlen的区别与联系

  • 2012年08月08日 22:37
  • 17KB
  • 下载

sizeof和strlen的区别和联系总结

strlen所作的仅仅是一个计数器的工作,它从内存的某个位置(可以是字符串开头,中间某个位置,甚至是某个不确定的内存区域)开始扫描,直到碰到第一个字符串结束符'\0'为止,然后返回计数器值。   ...
  • ghevinn
  • ghevinn
  • 2013年08月15日 01:11
  • 2116

Sizeof与Strlen的区别与联系

  • 2014年02月25日 20:29
  • 17KB
  • 下载

Sizeof与Strlen的区别与联系

Sizeof与Strlen的区别与联系 一、sizeof     sizeof(...)是运算符,在头文件中typedef为unsigned int,其值在编译时即计算好了,参数可以是数组、指...

sizeof和strlen的区别

  • 2015年02月04日 15:48
  • 5KB
  • 下载

strlen与sizeof

  • 2013年12月17日 09:26
  • 48KB
  • 下载

sizeof与strlen函数的区别

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

sizeof与strlen区别详解

  • 2014年05月19日 22:15
  • 28KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:sizeof、strlen
举报原因:
原因补充:

(最多只允许输入30个字)