sizeof 跟 strlen 的区别
1.参数
sizeof是c/c++ 中的一个操作符,其作用是返回对象或数据类型所占的内存字节数。
用法:sizeof(对象)、sizeof 对象、sizeof(类型)
如果类型做参数,返回的是该类型所占内存字节数,
对象做参数的几个常用的说明: sizeof(数组名) 返回的是数组所占空间字节数, 如:sizeof(数组名)/sizeof(数组元素类型) 计算数组大小。
sizeof(指针) 返回指针类型大小(32位机为4字节)
sizeof(*指针) 返回指针所指向数据类型的大小,如 char * pChar='a'; sizeof(*pChar) 为1字节。
strlen是c/c++ 中的一个函数,其作用是返回字符串的长度。
用法: strlen(char *pStr) 参数只能是字符指针。并且注意,字符指针指向的字符串必须以 \0 结尾(原因是strlen就是根据 \0 来判断字符指针是否结尾。)
另:数组名做函数参数的时候退化为指针。 但是上面可以看到 sizeof(数组名) 和sizeof(指针) 得到的是不一样的结果正好验证了 sizeof是操作符跟strlen函数的区别。
2.举例理解。
操作数组:char str[20] ="0123456789";
strlen(str) 10
sizeof(str) 20 20*sizeof(char)
sizeof(*str) 1 sizeof(char)
操作字符指针: char *pStr ="0123456789";
sizeof(pStr) 4
strlen(pStr) 10
sizeof(*pStr) 1
另:如果要获得字符串的长度,则一定要使用strlen 想想为什么吧。
sizeof 跟 strlen 的区别的更多相关文章
- sizeof和strlen的区别
一.sizeof sizeof(...)是运算符,而不是一个函数. sizeof操作符的结果类型是size_t,在头文件中typedef为unsigned int,其值在编译时即计算好了, ...
- Sizeof与Strlen的区别与联系
转自:http://www.cnblogs.com/carekee/articles/1630789.html 一.sizeof sizeof(...)是运算符,在头文件中typedef为uns ...
- Sizeof与Strlen的区别与联系(转)
Sizeof与Strlen的区别与联系 一.sizeof sizeof(...)是运算符,在头文件中typedef为unsigned int,其值在编译时即计算好了,参数可以是数组.指针.类型 ...
- C++-sizeof和strlen的区别
一.sizeof sizeof(...)是运算符,在头文件中typedef为unsigned int,其值在编译时即计算好了,参数可以是数组.指针.类型.对象.函数等. 它的功能是:获得保 ...
- sizeof和strlen的区别和联系总结
link:http://blog.csdn.net/ghevinn/article/details/9974967 strlen所作的仅仅是一个计数器的工作,它从内存的某个位置(可以是字符串开头 ...
- 【转】Sizeof与Strlen的区别与联系
原文地址:http://www.cnblogs.com/carekee/articles/1630789.html 1.sizeof sizeof(...)是运算符,在头文件中typedef为uns ...
- C++Sizeof与Strlen的区别与联系
一.sizeof sizeof(...)是运算符,在头文件中typedef为unsigned int,其值在编译时即计算好了,参数可以是数组.指针.类型.对象.函数等. 它的功能是:获得保 ...
- Sizeof与Strlen的区别【转】
本文转载自:http://www.cnblogs.com/carekee/articles/1630789.html Sizeof与Strlen的区别与联系 一.sizeof sizeof(.. ...
- 我也介绍下sizeof与strlen的区别
本节我也介绍下sizeof与strlen的区别,很简单,就几条: 1. sizeof是C++中的一个关键字,而strlen是C语言中的一个函数:2. sizeof求的是系统分配的内存总量,而strle ...
- C++基础--sizeof和strlen的区别
首先,来运行一段程序: #include "stdafx.h" #include <stdio.h> #include <string.h> int mai ...
随机推荐
- [转]理解HTTP幂等性
基于HTTP协议的Web API是时下最为流行的一种分布式服务提供方式.无论是在大型互联网应用还是企业级架构中,我们都见到了越来越多的SOA或RESTful的Web API.为什么Web API如此流 ...
- Lucene.net 多条件查询搜索
最近一直在研究lucene,目的是想让网站实现像搜索引擎那样的搜索,可以快速.准确的帮用户查询出想要的结果.废话不多说,上代码实例: 1.利用BooleanQuery进行多条件搜索(比较灵活) L ...
- Thinkphp源码分析系列(四)–Dispatcher类
下面我们来分析一下Thinkphp中的url解析和路由调度类.此类主要功能是 // +--------------------------------------------------------- ...
- PHP正则表达式模式修饰符 /i, /is, /s, /isU等
模式修饰符 下面列出了当前可用的 PCRE 修饰符.括号中提到的名字是 PCRE 内部这些修饰符的名称. 模式修饰符中的空格,换行符会被忽略,其他字符会导致错误. i (PCRE_CASELESS) ...
- linux系统limit知识
1.limit限制每个shell进程和它的子进程对资源的占用.每个登录,还是每个进程? 比如ulimit -n 10240 可以临时改变当前session的shell进程的文件句柄数限制,退出当前窗口 ...
- 答:SQLServer DBA 三十问之一: char、varchar、nvarchar之间的区别(包括用途和空间占用);xml类型查找某个节点的数据有哪些方法,哪个效率高;使用存储 过程和使用T-SQL查询数据有啥不一样;
http://www.cnblogs.com/fygh/archive/2011/10/18/2216166.html 1. char.varchar.nvarchar之间的区别(包括用途和空间占用) ...
- 1.mysql基础之 php 连接
1.连接数据库 $db=@mysql_connect('DB_HOST','DB_USER','DB_PASS') or die("Unable to connect"); DB_ ...
- FFT的分析以及matlab实验
FFT(Fast Fourier Transformation),即为快速傅氏变换,是离散傅氏变换(DFT)的快速算法. 采样得到的数字信号,做FFT变换,N个采样点,经过FFT之后,就可以得到N个点 ...
- php面试题目
PHP测试小例 1. 禁用COOKIE 后 SEESION 还能用吗? Cookie 是保存在浏览器 1.cookie是保存在本地的,而seesion是保存在服务器上的.所以两者没有直接的关系,禁用 ...
- 1、Python环境安装部署
一.环境准备 1.下载Python安装包(至官方网站) https://www.python.org/downloads/ 建议下载安装最新版 2.设置"环境变量" "我 ...