C++ sizeof操作符的用法和strlen函数的区别

摘要:本人首先介绍了C++中sizeof操作符的用法和注意事项,其次对比了和strlen的区别和使用,方便大家在写代码的时候查阅,和面试、笔试的时候复习。

目录:

sizeof的用法:

sizeof和strlen的区别:

sizeof的用法:

sizeof 是一种单目操作符,而不是函数。sizeof以字节形式给出操作数的存储空间

操作数可以是一个表达式或在括号内的类型名。操作数的存储空间由操作数的类型决定。

char str[]="hello";
char str1[100];
char *p;
int n=10;
sizeof(str1)=100;
sizeof(str)=5+1;
sizeof(p)=4;
sizeof(n)=4;
void Func(char str[100])

{
    sizeof(str)=4;//str退化成指针了
}
void *p=malloc(100);
sizeof(p)=4;

当数组变量被传入函数中做sizeof 运算,则和指针的运算没有区别。

sizeof和strlen的区别:

  • sizeof是运算符;strlen 是函数;

  • sizeof操作符的结果类型是size_t,它在头文件typedef为unsigned int 类型,该类型保证能容纳实现所建立的最大对象的字节大小。

  • sizeof可以用类型做参数,strlen只能用char * 做参数,且必须是以'\0'结尾。

  • 数组做sizeof的参数不退化,但作为strlen函数的参数,就会退化为指针了。

  • 大部分编译器在编译程序的时候,就计算出来sizeof了,这也是sizeof()可以作为数组定义的维数的原因,strlen函数的结果要等运行的时候才能计算出来,它用来计算字符串的长度,不是类型占内存的大小。

  • sizeof后如果是类型必须加括号,如果是变量名可以不加括号。这是因为sizeof是操作符不是函数的原因。

  • 在计算字符串数组的长度上有区别。 例如:

         char str[10];
         int a=strlen(str);
         int b=sizeof(str);
         //a 为0  b为10;
  • 如果要计算指针指向的字符串的长度,则一定要使用strlen例如:

         char *str="hello";
         int a=sizeof(str); 
         int b=strlen(str);
         //a=4  b= 5   
posted @ 2014-04-27 22:17  桂城老托尼  阅读(1665)  评论(0编辑  收藏  举报