sizeof和strlen()区别
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()区别的更多相关文章
- sizeof 和 strlen 区别
Sizeof与Strlen的区别与联系 一.sizeof sizeof(...)是运算符,在头文件中typedef为unsigned int,其值在编译时即计算好了,参数可以是数组.指针.类型. ...
- sizeof和strlen区别(转)
char str[20]="0123456789"; int a=strlen(str); /*a=10;strlen 计算字符串的长度,以\0'为字符串结束标记. int ...
- C语言中sizeof与strlen区别
本文转载自:http://www.2cto.com/kf/201109/105100.html 1. 以字符串形式出现的,编译器都会为该字符串自动添加一个0作为结束符,如在代码中写"abc& ...
- sizeof和strlen()区别及用法
//sizeof是以字节为单位计算变量或类型所占内存大小,它是属于C语言运算符系列:而strlen()是一个函数,是计算字符串长度(也是以字节为单位,但略有区别):比如: char array[] = ...
- sizeof和strlen区别
sizeof(...)是运算符,在头文件中typedef为unsigned int,其值在编译时即计算好了,参数可以是数组.指针.类型.对象.函数等 数组:编译时分配的空间大小 指针:指针所占的空间, ...
- C-sizeof和strlen区别,以及sizeof如何计算结构体大小
sizeof和strlen区别 sizeof是关键字,在编译时就能计算出值,可以计算任何类型 strlen是函数,只有在运行时才能去计算,且只能计算字符型的. 对于数组时,strlen是判断’\0’为 ...
- 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,其值在编译时即计算好了,参数可以是数组.指针.类型 ...
随机推荐
- 总结一下工作中用到的Mybatis业务逻辑
1.简单说明. MyBatis 可以使用简单的XML 或注解用于配置和原始映射,将接口和 Java 的 POJO( Plain Old Java Objects,普通的Java 对象)映射成数据库中的 ...
- 【Effective Java】10、java注解使用
package cn.xf.cp.ch02.item35; import java.lang.annotation.ElementType; import java.lang.annotation.R ...
- ORM查询语言(OQL)简介--高级篇:脱胎换骨
相关文章内容索引: ORM查询语言(OQL)简介--概念篇 ORM查询语言(OQL)简介--实例篇 ORM查询语言(OQL)简介--高级篇:脱胎换骨 ORM查询语言(OQL)简介--高级篇(续):庐山 ...
- jQuery als.js 跑马灯
ali.js是一款滚动插件,滚动的内容可包含文字和图片.它的API也很强大,包括滚动区域可见个数.每次滚动个数.滚动方向.是否循环滚动.是否自动滚动.滚动间隔时间.滚动动画速度.动画效果.滚动方向以及 ...
- HoverTree菜单0.1.3新增效果
HoverTree菜单0.1.3增加弹出菜单的动态效果,可以是动态下拉,也可以是动态淡入. 效果请看:http://keleyi.com/jq/hovertree/demo/demo.0.1.3.ht ...
- windows server2008 安装问题、sqlserver安装设置默认账户问题
1.Bios中的satadata设置开启 2账户和密码最好与本机相同
- Android studio 克隆分支
1.当远程仓库有两个分支时,像这样的 获得分支的远程仓库地址 注意:这个地址默认就是克隆master 分支 2.如何克隆 v1.2 分支 ? 用android studio 把项目打开,可以看到 此时 ...
- Android 手机卫士--构建服务端json、请求网络数据
本文地址:http://www.cnblogs.com/wuyudong/p/5900384.html,转载请注明源地址. 数据的传递 客户端:发送http请求 http://www.oxx.com/ ...
- objective-c系列-单例
// 地球只有一个,所以声明一个地球对象就可以了,千万不能声明两个啊!同理,有时候一个类也有只能有一个对象的情况,例如服务器,只想存到一个里 // 面,这样子,下次才可以取出上次存的数据. //用全局 ...
- Protocol and Delegate协议和代理
1.什么是协议? OC协议仿照Java的接口.协议和接口,都是不同类的对象之间一种通信的机制.2.协议的基础语法 单纯的语言描述协议的语法,很难让人理解,主要因为在OC中协议是类对象的通信机制,他 ...