sizeof关键字和strlen()标准函数都可以用来测试字符串的长度,但是两者有很大的不同

  • sizeof只能在本函数内, 使用""不指定长度的字符数组中才能测出字符串的真实长度,当然,包括'\0'
  • strlen()任何情况下都能正确的得出字符串的字面值大小
  • 本函数内,sizeof测试char* s的结果是4byte,测试指定长度的数组是指定的长度
  • 在函数外部,sizeof测试的所有形式的字符串都是4byte
#include<stdio.h>
#include<string.h>
int fcn(const char* str){
printf("in fcn :sizeof(str):%d\n",sizeof(str));
printf("in fcn :strlen(str):%d\n",strlen(str));
} int main(int argc, const char *argv[])
{
char a[]="12";
char arr[10]="12";
char* s="12";
printf("in main:sizeof (\"12\"):%d\n",sizeof("12"));
printf("in main:strlen (\"12\"):%d\n",strlen("12"));
printf("in main:sizeof(a):%d\n",sizeof(a));
printf("in main:strlen(a):%d\n",strlen(a));
printf("in main:sizeof(arr):%d\n",sizeof(arr));
printf("in main:strlen(arr):%d\n",strlen(arr));
printf("in main:sizeof(s):%d\n",sizeof(s));
printf("in main:strlen(s):%d\n",strlen(s));
fcn("12");
fcn(a);
fcn(arr);
fcn(s);
return 0;
}

输出结果

$./a.out
in main:sizeof ("12"):3
in main:strlen ("12"):2
in main:sizeof(a):3
in main:strlen(a):2
in main:sizeof(arr):10
in main:strlen(arr):2
in main:sizeof(s):4
in main:strlen(s):2
in fcn :sizeof(str):4
in fcn :strlen(str):2
in fcn :sizeof(str):4
in fcn :strlen(str):2
in fcn :sizeof(str):4
in fcn :strlen(str):2
in fcn :sizeof(str):4
in fcn :strlen(str):2

sizeof和strlen()区别的更多相关文章

  1. sizeof 和 strlen 区别

    Sizeof与Strlen的区别与联系 一.sizeof    sizeof(...)是运算符,在头文件中typedef为unsigned int,其值在编译时即计算好了,参数可以是数组.指针.类型. ...

  2. sizeof和strlen区别(转)

    char str[20]="0123456789"; int   a=strlen(str); /*a=10;strlen 计算字符串的长度,以\0'为字符串结束标记. int   ...

  3. C语言中sizeof与strlen区别

    本文转载自:http://www.2cto.com/kf/201109/105100.html 1. 以字符串形式出现的,编译器都会为该字符串自动添加一个0作为结束符,如在代码中写"abc& ...

  4. sizeof和strlen()区别及用法

    //sizeof是以字节为单位计算变量或类型所占内存大小,它是属于C语言运算符系列:而strlen()是一个函数,是计算字符串长度(也是以字节为单位,但略有区别):比如: char array[] = ...

  5. sizeof和strlen区别

    sizeof(...)是运算符,在头文件中typedef为unsigned int,其值在编译时即计算好了,参数可以是数组.指针.类型.对象.函数等 数组:编译时分配的空间大小 指针:指针所占的空间, ...

  6. C-sizeof和strlen区别,以及sizeof如何计算结构体大小

    sizeof和strlen区别 sizeof是关键字,在编译时就能计算出值,可以计算任何类型 strlen是函数,只有在运行时才能去计算,且只能计算字符型的. 对于数组时,strlen是判断’\0’为 ...

  7. sizeof和strlen的区别

    一.sizeof    sizeof(...)是运算符,而不是一个函数.    sizeof操作符的结果类型是size_t,在头文件中typedef为unsigned int,其值在编译时即计算好了, ...

  8. Sizeof与Strlen的区别与联系

    转自:http://www.cnblogs.com/carekee/articles/1630789.html 一.sizeof    sizeof(...)是运算符,在头文件中typedef为uns ...

  9. Sizeof与Strlen的区别与联系(转)

    Sizeof与Strlen的区别与联系 一.sizeof     sizeof(...)是运算符,在头文件中typedef为unsigned int,其值在编译时即计算好了,参数可以是数组.指针.类型 ...

随机推荐

  1. 2016暑假多校联合---GCD

    Problem Description Give you a sequence of N(N≤100,000) integers : a1,...,an(0<ai≤1000,000,000). ...

  2. CentOS6.5安装telnet命令

    安装好memcache之后想进入连接测试,telnet localhost 11211发现竟然提示没有telnet这个命令,于是需要自己进行安装. 一.查看本机是否安装telnet #rpm -qa ...

  3. Java经典实例:纪元秒和本地日期时间互换

    Java版本:1.8开始 import java.time.Instant; import java.time.ZoneId; import java.time.ZonedDateTime; /** ...

  4. Python的sorted函数应用

    sorted()函数也是一个高阶函数,它还可以接收一个key函数来实现自定义的排序 L = [('Bob', 75), ('Adam', 92), ('Bart', 66), ('Lisa', 88) ...

  5. 【转】Nginx区分PC或手机访问不同网站

    原文链接:http://www.nginx.cn/784.html 近几年来,随着手机和pad的普及,越来越多的用户选择使用移动客户端访问网站,而为了获取更好的用户体验,就需要针对不同的设备显示出最合 ...

  6. javascript适合移动端的响应式瀑布流插件实例演示

    在线预览 jQuery插件大全 实例代码 <div class="sucaihuo-container"> <div class="demo" ...

  7. Timeline Portfolio - 时间轴作品集效果

    这里分享一个超炫的时间轴展示作品集效果.设计师和前端开发人员可以借助这个效果来制作新颖的作品集和个人简历.时间轴专门用来呈现出年代的一系列事件.您可以把这种效果嵌入各种媒体,包括微博,视频和地图,并把 ...

  8. 24个很赞的 Node.js 免费教程和在线指南

    JavaScript 最初是用来创建动态网站效果的的前端语言.而如今,这门脚本语言也可以用作后端开发,用于搭建 Web 服务器,开发接口,甚至创建博客.在下面这个列表中包括24个 Node.js 教程 ...

  9. Titanium中调用ios组件时语言不是本地化的解决方法

    用Titanium开发的ios应用中,当调用系统组件时,尽管手机已经设置了系统语言为中文,但那些组件的界面却仍为英文.比如调用iphone中的相册组件,其界面为: 那么怎么让它跟系统语言保持一致呢? ...

  10. Navicat for Oracle实现连接Oracle

    不知道为什么,从一开始,我就不喜欢Oracle,名字好听,功能强大,但总感觉"高不可攀";或许是因为我觉得其他的数据库就可以解决数据问题,不太了解Oracle的优势:而且它长得也不 ...