sizeof和strlen的区别 分类: C/C++ 2015-07-03 09:05 169人阅读 评论(0) 收藏
2015-07-03 09:05
435 查看
1、sizeof是运算符,strlen是函数;
2、sizeof可以用类型作为参数,而strlen只能用char*型量作为参数,且必须以‘\0’结尾;
sizeof(int)=4;
3、数组名作为sizeof的参数时,不会退化为指针,而作为函数的参数的时候会退化为指针;
char a[10]="abc";
sizeof(a)=10;
strlen(a)=4;
f(int *a[])
{
sizeof(a)=4;
//因为已经退入为指针
}
4、sizeof的值在编译时就已经确定,所以sizeof(x)可以用来创建数组,而strlen的值要在运行期才能确定;
char a[sizeof(int)];
5、sizeof计算的是栈上分配的空间的大小,所以static(全局数据区)、动态数组(堆)无法用sizeof统计大小;
6、用sizeof计算结构变量大小时,一定要注意数据对齐问题;
(C++传统数组作为参数,传递的都是指向数组首地址的指针,数组长度需要额外形参传入,当然,也可以用容器)
7、还有一个问题:sizeof(string)的大小和编译器有关,一般是4。
2、sizeof可以用类型作为参数,而strlen只能用char*型量作为参数,且必须以‘\0’结尾;
sizeof(int)=4;
3、数组名作为sizeof的参数时,不会退化为指针,而作为函数的参数的时候会退化为指针;
char a[10]="abc";
sizeof(a)=10;
strlen(a)=4;
f(int *a[])
{
sizeof(a)=4;
//因为已经退入为指针
}
4、sizeof的值在编译时就已经确定,所以sizeof(x)可以用来创建数组,而strlen的值要在运行期才能确定;
char a[sizeof(int)];
5、sizeof计算的是栈上分配的空间的大小,所以static(全局数据区)、动态数组(堆)无法用sizeof统计大小;
6、用sizeof计算结构变量大小时,一定要注意数据对齐问题;
(C++传统数组作为参数,传递的都是指向数组首地址的指针,数组长度需要额外形参传入,当然,也可以用容器)
7、还有一个问题:sizeof(string)的大小和编译器有关,一般是4。
相关文章推荐
- CFileDialog使用总结
- c++链表的创建与操作;
- C++的引用
- c语言中!=EOF的意义
- C++ 与 CDC相关的知识,点滴总结
- 黑马程序员——C语言基础学习(四)---数组和指针的总结学习
- 【C++ Primer Plus学习笔记】第一章:预备知识
- c语言中的字符和字符串
- C++虚函数默认实参的注意事项
- No.1 C++基础---C++简介
- C/C++内存对齐 ZZ
- C语言C++程序的运行程序cannot open Debug/1.exe for writing错误
- 关于VC++6.0使用过程中的一些经历
- 黑马程序员---C语言基础---关系、逻辑运算
- 读书笔记《Effective C++》tt
- 海伦公式 C++代码
- C++ cout利用控制符dec、hex和oct,分别输出十进制、十六进制和八进制显示整数
- 通过指针访问C++对象的私有成员
- 《C语言及程序设计》程序阅读——宏定义
- c++编写断点续传和多线程下载模块【转】