char *t = "我a";

char t1[MAX_PATH] = "aaaaaa";

char display1[MAX_PATH];

char display2[MAX_PATH];

int len = sizeof(t);

int len1 = strlen(t);

itoa(len, display1, 10);

itoa(len1, display2, 10);

out(display1);

out(display2);

显示

sizeof 在取指针char的时候,不管多长长度都是4

sizeof 在取指针时,取到的是指针的长度,而不是char内容 的长度

strlen 取到的则是char的长度,汉子占2个长度

sizeof 在取char【maxpath】的时候,不管多长长度都是maxpath

sizeof 在取指针时,取到的是数组定义的长度,而不是char内容 的长度

strlen 取到的则是char的长度,汉子占2个长度

streln 取得长度比sizeof更准确

网上说法:

#include "stdafx.h"

#include "windows.h"

#include <iostream>

using namespace std;

int
_tmain(int argc, _TCHAR* argv[])

{

 char str1[]="abcde";

 char str2[]="我是中国人";

 WCHAR str3[]=L"abcde";

 WCHAR str4[]=L"我是中国人";

cout<<strlen(str1)<<endl;

 cout<<sizeof(str1)<<endl;

 cout<<endl;

cout<<strlen(str2)<<endl;

 cout<<sizeof(str2)<<endl;

 cout<<endl;

cout<<wcslen(str3)<<endl;

 cout<<sizeof(str3)<<endl;

 cout<<endl;

cout<<wcslen(str4)<<endl;

 cout<<sizeof(str4)<<endl;

 cout<<endl;

return
0;

}

输出结果:

5

6

10

11

5

12

5

12

请按任意键继续. . .

由此可见,strlen返回的是字节数(对中英文不一致,中文占两个字节,不包括'/0'),而wcslen返回的是字符数(对中英文一致)。而sizeof返回的是字节数(包含'/0',而'/0'在Unicode下也是占两个字节的)。

地址:http://blog.csdn.net/hczhiyue/article/details/6248229

关于sizeof 跟strlen 的区别的更多相关文章

  1. sizeof和strlen的区别

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

  2. Sizeof与Strlen的区别与联系

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

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

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

  4. C++-sizeof和strlen的区别

    一.sizeof    sizeof(...)是运算符,在头文件中typedef为unsigned int,其值在编译时即计算好了,参数可以是数组.指针.类型.对象.函数等.    它的功能是:获得保 ...

  5. sizeof和strlen的区别和联系总结

    link:http://blog.csdn.net/ghevinn/article/details/9974967    strlen所作的仅仅是一个计数器的工作,它从内存的某个位置(可以是字符串开头 ...

  6. 【转】Sizeof与Strlen的区别与联系

    原文地址:http://www.cnblogs.com/carekee/articles/1630789.html 1.sizeof  sizeof(...)是运算符,在头文件中typedef为uns ...

  7. C++Sizeof与Strlen的区别与联系

    一.sizeof    sizeof(...)是运算符,在头文件中typedef为unsigned int,其值在编译时即计算好了,参数可以是数组.指针.类型.对象.函数等.    它的功能是:获得保 ...

  8. Sizeof与Strlen的区别【转】

    本文转载自:http://www.cnblogs.com/carekee/articles/1630789.html Sizeof与Strlen的区别与联系 一.sizeof    sizeof(.. ...

  9. 我也介绍下sizeof与strlen的区别

    本节我也介绍下sizeof与strlen的区别,很简单,就几条: 1. sizeof是C++中的一个关键字,而strlen是C语言中的一个函数:2. sizeof求的是系统分配的内存总量,而strle ...

  10. C++基础--sizeof和strlen的区别

    首先,来运行一段程序: #include "stdafx.h" #include <stdio.h> #include <string.h> int mai ...

随机推荐

  1. delphi 串口 关于RS485总线通信协议开发注意事项

    http://blog.csdn.net/shjhuang/article/details/9426739 关于RS485总线通信协议开发注意事项 1       前言 近段时间发现我们系统在进行设备 ...

  2. Twisted

    Twisted是一个事件驱动的网络框架,其中包含了诸多功能,例如网络协议,线程,数据库管理,网络操作,电子邮件等 事件驱动 一,注册事件 二,触发事件 自定义事件框架  event_fram.py # ...

  3. 部署web应用

    package it.cast.servlet; import java.io.IOException; import java.io.PrintWriter; import javax.servle ...

  4. mvc action controller area

    获取控制器名称: ViewContext.RouteData.Values["controller"].ToString(); 获取Action名称: ViewContext.Ro ...

  5. Google Protocol Buffer 的使用和原理[转]

    本文转自: http://www.ibm.com/developerworks/cn/linux/l-cn-gpb/ Protocol Buffers 是一种轻便高效的结构化数据存储格式,可以用于结构 ...

  6. SQL Server 数据库备份

    declare @filename varchar(1024) declare @SQLDB varchar(50) declare @path varchar(1024) set @path = N ...

  7. shell 中调用其他的脚本

    方法有三种: 1 使用source 2 使用 . 3 使用sh 简单实验: first.sh #!/bin/bashecho 'your are in first file' second.sh #! ...

  8. 把CMSampleBufferRef转成Data

    CMSampleBufferRef ref=[output copyNextSampleBuffer]; NSLog(@"%@",ref); if(ref==NULL) break ...

  9. JS数组键值,数组合并,

    eg: var arr = [] arr.test = '测试'; arr.push(1); arr.push(2); arr.obj = '对象'; console.log(arr);// [ 1, ...

  10. 剑指offer-二叉树的深度

    题目: 输入一棵二叉树,求该树的深度.从根结点到叶结点依次经过的结点(含根.叶结点)形成树的一条路径,最长路径的长度为树的深度. 链接: http://www.nowcoder.com/practic ...