strlensizeof
2019独角兽企业重金招聘Python工程师标准>>>
sizeof 和 strlen 有以下区别:
sizeof 是一个操作符,strlen 是库函数。
sizeof 的参数可以是数据的类型,也可以是变量,而 strlen 只能以结尾为‘\ 0‘的字符串作参数。
编译器在编译时就计算出了 sizeof 的结果。而 strlen 函数必须在运行时才能计算出来。并且 sizeof
计算的是数据类型占内存的大小,而 strlen 计算的是字符串实际的长度。
数组做 sizeof 的参数不退化,传递给 strlen 就退化为指针了。
int _tmain(int argc, _TCHAR* argv[])
{
//strlen(char*)函数求的是字符串的实际长度,它求得方法是从开始到遇到第一个'\0',
// 如果你只定义没有给它赋初值,这个结果是不定的
// 它会从aa首地址一直找下去,直到遇到'\0'停止
//而sizeof()返回的是变量声明后所占的内存数,不是实际长度,
//此外sizeof不是函数,仅仅是一个操作符,strlen是函数。
char aa[10];
std::cout << strlen(aa) << endl; //结果是不定的
char bb[10]={'\0'};
std::cout << strlen(bb) << endl; //结果为0
char cc[10] = "hui";
std::cout << strlen(cc) << endl; //结果为3
char *s="Golden Global View";
std::cout << strlen(s) << endl; // 18
std::cout << sizeof(aa) << endl; // 10
std::cout << sizeof(bb) << endl; // 10
std::cout << sizeof(cc) << endl; // 10
std::cout << sizeof(s) << endl; // 4
//大部分编译程序 在编译的时候就把sizeof计算过了 是类型或是变量的长度 这就是sizeof(x)可以用来定义数组维数的原因
char* ee = "0123456789";
std::cout << sizeof(ee) << endl; //结果 4 ===》ee是指向字符串常量的字符指针
std::cout << sizeof(*ee) << endl; //结果 1 ===》*ee是第一个字符
char str[20]="0123456789";
std::cout << strlen(str) << endl; //10
std::cout << sizeof(str) << endl; //20
char ff[] = "0123456789";
std::cout << sizeof(ff) << endl; //结果 11 ===》ff是数组,计算到\0位置,因此是10+1
std::cout << sizeof(*ff) << endl; //结果 1 ===》*ff是第一个字符
char gg[100] = "0123456789";
std::cout << sizeof(gg) << endl; //结果是100 ===》gg表示在内存中的大小 100×1
std::cout << strlen(gg) << endl; //结果是10 ===》strlen是个函数,内部实现是用一个循环计算到\0之前为止
int hh[100] = {0,1,2,3,4,5,6,7,8,9};
std::cout << sizeof(hh) << endl; //结果 400 ===》hh表示在内存中的大小 100×4
//std::cout << strlen(hh) << endl; //错误 ===》strlen的参数只能是char* 且必须是以'\0'结尾的
char q[]="abc";
char p[]="abc\n";
std::cout << sizeof(q) << endl; // 4
std::cout << sizeof(p) << endl; // 5
std::cout << strlen(q) << endl; // 3
std::cout << strlen(p) << endl; // 4
class X
{int i; int j; char k; };
X x;
cout<<sizeof(X)<<endl; //结果 12 ===》内存补齐
cout<<sizeof(x)<<endl; //结果 12 同上
cin.get();
}
转载于:https://my.oschina.net/ucliaohh/blog/806156
strlensizeof相关推荐
最新文章
- JVM解释器和编译器
- SAP Cloud for Customer里如何根据产品ID拿到其UUID
- 线段树 + 矩阵 --- ZOJ 3772 Calculate the Function
- 混合多云架构_使用混合多云每个人都应避免的3个陷阱(第2部分)
- c语言借阅管理题目内容描述,C语言 图书借阅管理统 第四组.doc
- TiDB集群大规模删除实践
- MYSQL中SET NAMES UTF8的作用和内涵
- u-boot 2016.05 添加自己的board 以及config.h uboot移植
- Oracle RMAN备份与还原
- xp如何添加桌面计算机回收站,WinXP如何找到回收站图标?
- 完美解决select2插件提示信息是英文的问题
- 关于程序员成长的一点思考
- Win10如何使用win7的照片查看器
- html 的(热点区域的建立、框架的建立)
- Windows环境下OpenSSL下载安装及制作证书
- localhost:8080打不开原因解决方法
- 51单片机用c语言在液晶1602上显示汉字,lcd1602与单片机连接图,基于51单片机的lcd1602液晶显示屏连接电路图...
- C++中cout的含义????
- 微信支付 SpringCloud+Vue
- python爬虫17K小说网资料
热门文章
- sharepoint 页面定制经验小结
- asp.net实现无刷新,无须AJAX
- Spring项目中使用webservice实现h5的websocket通信
- MySQL 8.0 error 2059: Authentication plugin 'caching_sha2_password' cannot be loaded
- aes 加密_结合RSA与AES实现前后端加密通信
- matlab padarray函数零,matlab padarray函数
- linux rt 应用程序,RTlinux编程
- android标题栏的属性,android – 属性“titleTextStyle”已经定义?
- 学生信息管理系统的价值PHP,php技术对学生管理系统实现的价值研究
- echarts3 graph java_Echarts中graph类型的运用求教