C++菜鸟常见错误整理(第十四天)
2013-06-13 14:53
190 查看
关于sizeof
一、数组
1、char* a="0123456789";
sizeof(a)结果是4,a是指向字符串常量的字符指针,sizeof(*a)=1,*a是第一个字符
2、char a[]="0123456789";
sizeof(a)=11,a是数组,计算到\0,位置,因此是10+1
sizeof(*a)=1.*a是第一个字符
3、char a[100]="0123456789";
sizeof(a)=100 sizeof表示内存预分配的大小,100*1
strlen(a)结果为10,他的内部实现使用一个循环计算字符串长度,直到\0为止
4、int a[100]="0123456789";
sizeof(a)=100*4
strlen(a)错误
二、sizeof和strlen的区别
1、sizeof是运算符,strlen是函数
2、sizeof可以用类型做参数,strlen只能用char*做参数,而且必须以\0结尾。sizeof还可以用函数做参数,
例如 shor f();cout<<sizeof(f());结果就是2,sizeof(short)
3、数组做sizeof的参数不退化,传递给strlen就退化为指针了
4、大部分编译程序在编译的时候就把sizeof计算过了,是类型或者变量的长度,这就是sizeof(x)可以用来定义数组
维数的原因
char str[20] = "012345566"; int a = stlean(str);//a=10;int b = sizeof(str);//b=20
5、strlen的结果要在运行的时候才能计算出来,用来计算字符串的长度,而不是类型占内存的大小
6、数组作为参数传给函数时传的是指针而不是数组,传递的是数组的首地址。如fun(char [9]) fun(char [])
都等价于fun(*char)。在C++中,传递的永远是数组的首元素的指针,编译器不知道数组的大小
7、sizeof的结果是类型就必须加括号,如果是变量名就可不加括号,因为sizeof是个操作符而不是函数
8、当使用了一个结构类型或变量的时候,sizeof返回实际大小,当使用一静态空间数组时,sizeof返回全部数组的
尺寸,sizeof不能返回被动态分配数组或者外部的数组尺寸
一、数组
1、char* a="0123456789";
sizeof(a)结果是4,a是指向字符串常量的字符指针,sizeof(*a)=1,*a是第一个字符
2、char a[]="0123456789";
sizeof(a)=11,a是数组,计算到\0,位置,因此是10+1
sizeof(*a)=1.*a是第一个字符
3、char a[100]="0123456789";
sizeof(a)=100 sizeof表示内存预分配的大小,100*1
strlen(a)结果为10,他的内部实现使用一个循环计算字符串长度,直到\0为止
4、int a[100]="0123456789";
sizeof(a)=100*4
strlen(a)错误
二、sizeof和strlen的区别
1、sizeof是运算符,strlen是函数
2、sizeof可以用类型做参数,strlen只能用char*做参数,而且必须以\0结尾。sizeof还可以用函数做参数,
例如 shor f();cout<<sizeof(f());结果就是2,sizeof(short)
3、数组做sizeof的参数不退化,传递给strlen就退化为指针了
4、大部分编译程序在编译的时候就把sizeof计算过了,是类型或者变量的长度,这就是sizeof(x)可以用来定义数组
维数的原因
char str[20] = "012345566"; int a = stlean(str);//a=10;int b = sizeof(str);//b=20
5、strlen的结果要在运行的时候才能计算出来,用来计算字符串的长度,而不是类型占内存的大小
6、数组作为参数传给函数时传的是指针而不是数组,传递的是数组的首地址。如fun(char [9]) fun(char [])
都等价于fun(*char)。在C++中,传递的永远是数组的首元素的指针,编译器不知道数组的大小
7、sizeof的结果是类型就必须加括号,如果是变量名就可不加括号,因为sizeof是个操作符而不是函数
8、当使用了一个结构类型或变量的时候,sizeof返回实际大小,当使用一静态空间数组时,sizeof返回全部数组的
尺寸,sizeof不能返回被动态分配数组或者外部的数组尺寸
相关文章推荐
- C++菜鸟常见错误整理(第一天)
- C++菜鸟常见错误整理(第十二天)
- C++菜鸟常见错误整理(第六天)
- C++菜鸟常见错误整理(第十一天)
- C++菜鸟常见错误整理(第十天)
- C++菜鸟常见错误整理(第五天)
- C++菜鸟常见错误整理(第七天)
- C++菜鸟常见错误整理(第九天)
- C++菜鸟常见错误整理(第三天)
- C++菜鸟常见错误整理(第八天)
- C++菜鸟常见错误整理(第四天)
- C++菜鸟常见错误整理(第二天)
- C++菜鸟常见错误整理(第十三天)
- C/C++常见编译错误整理
- C++中常见错误整理(不定期更新)
- c++常见编译错误解决方案
- 转 常见的几种c++的错误
- 狂暴的菜鸟之CentOS5.5环境下常见错误信息及解决方法【持续更新中。。。】
- 常见的C++编译错误
- C++编程常见错误整理【转自周兆熊老师blog】