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. css权重

    1.行内样式,指的是html文档中定义的style <h1 style="color: #fff;">header</h1> 2.ID选择器 3.类,属性选 ...

  2. 移动端-js触摸事件

    开发者工具 在移动开发中,一种较为容易的做法是,先在桌面上开始原型设计,然后再在打算要支持的设备上处理移动特有的部分.多点触摸正是难以在PC上进行测试的那些功能之一,因为大部分的PC都没有触摸输入. ...

  3. 轻松玩转jquery。

    一.简介 jQuery创始人是美国John Resig,是优秀的Javascript框架: jQuery是一个轻量级.快速简洁的javaScript库.源码戳这 jQuery产生的对象时jQuery独 ...

  4. ABAP语言常用的系统字段及函数

    常用的系统变量如下: 1. SY-PAGNO当前页号 2. SY-DATUM当前时间 3. SY-LINSZ当前报表宽度 4. SY-LINCT当前报表长度 5. SPACE空字符 6. SY-SUB ...

  5. CRM 2013 中业务流程的

    在CRM 2013 中有一个新功能就业务流程,它可以引导用户在既定好的业务规则下操作表单,实现业务之前的衔接.并且让衔接可以视化,能清楚定位到当前的流程在那个节点.我们在配置视图的时候可以将流程阶段放 ...

  6. c# 嵌入资源文件

    欢迎转载,转载请注明:转载自[ http://www.cnblogs.com/zjfree/ ] 开发环境:VS2005 C# 首先将要嵌入的资源拷贝到工程目录下. 设置文件生成操作为:嵌入的资源 获 ...

  7. JavaScript学习01 语言简介、基本使用和变量声明

    JavaScript语言简介.基本使用和变量声明 JavaScript是网景(Netscape)公司开发的一种基于客户端浏览器.面向对象.事件驱动式的网页脚本语言. JavaScript的前身叫Liv ...

  8. git stash提交PR的正确步骤&git squash技术

    1.git stash梳理 1.1git stash的克隆与同步 首先整理下git stash的逻辑是这样 在本地做出了新的修改,提交时显示当前的版本不是最新版本,这时就需要先pull一下自己代码仓库 ...

  9. android编译系统的makefile文件Android.mk写法

    Android.mk文件首先需要指定LOCAL_PATH变量,用于查找源文件.由于一般情况下Android.mk和需要编译的源文件在同一目录下,宏函数“my-dir”右编译系统提供的,用于返回当前路径 ...

  10. 私有Pods封装个推SDK功能(解决方案)

    一:运用场景 公司中同时有好几个APP在开发,而且每个APP都有使用到集成个推SDK来处理消息的功能,以前的做法是每个APP都去集成并在AppDelegate处理一些SDK的代码,包含个推基础配置.消 ...