码迷,mamicode.com
首页 > 编程语言 > 详细

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

时间:2014-04-28 16:00:51      阅读:559      评论:0      收藏:0      [点我收藏+]

标签:com   http   blog   class   style   img   div   code   java   size   javascript   

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

目录:

sizeof的用法:

sizeof和strlen的区别:

sizeof的用法:

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

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

bubuko.com,布布扣
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;
bubuko.com,布布扣

当数组变量被传入函数中做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   

C++ sizeof操作符的用法和strlen函数的区别,布布扣,bubuko.com

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

标签:com   http   blog   class   style   img   div   code   java   size   javascript   

原文地址:http://www.cnblogs.com/googny/p/3695319.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!