sizeof()与strlen()用法

原创 2007年09月22日 09:28:00
首先我们声明了
char a[5];
a[0]='a';
a[1]='b';
a[2]='c';
1. sizeof()是计算参数所占用的内存的单元数(字节数),那么sizeof(a)==5;sizeof(*a)==1;另外sizeof("abc")==4(不是3)我想这个很容易明白。
2. strlen(const char *),此函数在msdn里面的解释:returns the number of characters in string, excluding the terminal NULL. No return value is reserved to indicate an error。如果直接翻译,其实我测试的结果是一致的(msdn当然还是应该相信的),问题在于:它说的不够清楚,它的意思是说返回字符串的字符个数,不包括结束符NULL(参数要求是以NULL结束的字符串,我的理解应该还包括'/0'结束的)。
3. 我觉得正确的理解是,strlen()是返回字符个数,且,这个个数应该是遇到null或'/0'之前的字符个数。
我们来测试:
#include <iostream.h>
#include <string.h>
void main ()
{   
  char a[5] ;
 a[0]='a';
 a[1]='c';
 a[2]='/0';
 a[3]='a';
 a[4]='b';
 cout <<sizeof(a)<<endl;
 cout<<strlen(a)<<endl;
 cout <<sizeof("abc")<<endl;
 cout <<strlen("abc/0d")<<endl;
}
结果为
5
2
4
3
 
版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

sizeof与strlen的用法与区别

在进入正题之前,我们来先看一段代码#include #include int main(int argc, char *argv[]) { char a[10]; printf("...

sizeof的用法(附strlen函数)

一、由几个例子说开去。 第一个例子: char* ss = "0123456789"; sizeof(ss) 结果 4 ===》ss是指向字符串常量的字符指针 sizeof(*ss) 结...

C语言:内存地址分析 & sizeof和strlen用法总结

还是在大学时代接触的C语言,当时学习数组、指针等概念时,怎一个“晕”字了得。最近在学习之余,疯狂地恶补了相关知识,故总结之,如有错误,请大家多多指点。 一、 内存地址分析 1) 先来看一个最基础的...

由strcat函数引发的对char *a和char a[]以及sizeof和strlen

/*  http://www.cnblogs.com/kaituorensheng/archive/2012/10/23/2736069.html参考这篇文章 *  char *a = "Hello...

sizeof和strlen的区别

sizeof和strlen的区别

  • 2014-11-27 23:41
  • 29KB
  • 下载

C/C++基础之 sizeof 与 strlen的讨论

** sizeof接收的参数可以是数据类型,也可以是变量,得出的是该对象所占用内存空间的大小。特别地,如果是字面值常量,得到的是该字面值常量所占内存的大小 ** 对于sizeof,要搞清楚对象到底是谁...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)