以实例来说明strlen()和sizeof()的区别
来源:互联网 发布:无线wifi网络电视 编辑:程序博客网 时间:2024/06/01 10:04
机器:Win8.1 64位专业版
1)strlen计算的是字符串的长度,只能用char*做参数,且必须是以''\0''结尾的。
sizeof计算的是变量使用的内存大小,不受里面存储的内容改变,一般都是类型作为参数,(所以用它拿来给一 些变量什么的 做参数,感觉不好,为什么出这么多难为人的题目呢?)
int ss[100] = "0123456789";
sizeof(ss) //结果 400 ===>ss表示再内存中的大小 100×4,int占4个字节(win)
strlen(ss)// 错误 ===>strlen的参数只能是char* 且必须是以''/0''结尾的
sizeof(ss) //结果 400 ===>ss表示再内存中的大小 100×4,int占4个字节(win)
strlen(ss)// 错误 ===>strlen的参数只能是char* 且必须是以''/0''结尾的
2)sizeof是运算符,如果是普通的变量名可以不加括号,如果是类型必须加,strlen是函数,必须加括号
sizeof c;//变量名可以不加括弧
sizeof(int);//语言中的类型必须加()
3)和指针有关的,比较容易错的问题
char* ss = "0123456789";
sizeof(ss);//结果 4 ===>ss是指向字符串常量的字符指针
sizeof(*ss);//结果 1 ===>*ss是第一个字符
size传入参数指针时如何判断,按照网上的说法:当操作数是指针时,,sizeof依赖于编译器。例如Microsoft C/C++7.0中,near类指针字节数为2,far、huge类指针字节数为4。一般Unix的指针字节数为4。这里就想到了为什 么在网络编程中经常出现char far *的原因了。
4)用编译的思想理解
char str[20]="0123456789";//str是编译期大小已经固定的数组
int a=strlen(str); //a=10;//strlen()在运行起确定
int b=sizeof(str); //而b=20;//sizeof()在编译期确定
网络试验中的一个代码片段:
结果:
在网络实验中因为这两个函数导致出错,服务器端在send()中将发送长度用sizeof()传过去,参数是指针,按照上面的分析,其实只是个4bytes的数,所以服务器的25bytes长的数据,只有4bytes传过去,所以客户机只接受到了“FRI“。
0 0
- 以实例来说明strlen()和sizeof()的区别
- 说明sizeof和strlen的区别
- strlen和sizeof的区别
- strlen和sizeof的区别
- strlen和sizeof的区别
- sizeof 和 strlen 的区别
- sizeof 和 strlen的区别
- sizeof和strlen的区别
- sizeof 和 strlen 的区别
- sizeof 和strlen的区别
- strlen和sizeof的区别
- sizeof和strlen的区别
- strlen和sizeof的区别
- sizeof和strlen的区别
- strlen和sizeof的区别
- strlen和sizeof的区别
- sizeof和strlen的区别
- strlen和sizeof的区别
- vs2010连接SQL Server 2008数据库以及插入数据
- 剑指offer的34题 丑数
- 因为此版本的应用程序不支持其项目类型(.vcproj)的解决方法
- mongodb学习记录之四:聚合
- scanf()函数输入格式大全
- 以实例来说明strlen()和sizeof()的区别
- ibatis源码探究
- NYOJ524 A-B Problem
- 炉石传说iPad版抢鲜玩 最全国服登录教程
- javascript实现添加收藏功能,对于Chrom,webkit内核浏览器提醒热键添加
- LeetCode Reverse Words in a String(反转字符串)
- Python中赋值、浅拷贝与深拷贝
- 二分查找的正确姿势
- C++构造、析构和赋值