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. eclipse 安装svn插件

    1.下载最新的Eclipse,我的版本是3.7.2 indigo(Eclipse IDE for Java EE Developers)版    如果没有安装的请到这里下载安装:http://ecli ...

  2. java中final 、finally、finalize的区别

    比较java中常用关键字以免混淆 final :用来修饰变量,表示变量为最终变量,不能被改变 finally:在处理异常的时候使用,表示最终要执行的代码块 finalize:java Object类中 ...

  3. <2016-1-28>

    1.链接的网址前加入?action=bs-transfer@mdp&url=http://www.baidu.com 2.登录页面的验证 <script> function log ...

  4. OpenCV的数据类型---Cv

    CvScalar就是一个包含四个元素的结构体变量. CvScalar定义可存放1—4个数值的数值,其结构如下. typedef struct CvScalar{    double val[4];}C ...

  5. SpringMVC工作环境搭建 配置文件

    web.xml配置 在服务器端容器启动之前加载配置文件的顺序:context-param>listener>filter>servlet //容器配置application上下文的时 ...

  6. Linux学习一:安装/配置vi,熟悉gcc/vi

    1.安装的ubuntu14,进入桌面,ctrl+alt+t进入终端. 获得root权限: $sudo passwd root 输入密码 (注意:输入的和windows下不一样不会显示的,尽管输入就行. ...

  7. Qt编程之mapx组件编程

    今天利用组件打包程序写了一些小例子,给大家贴出来,顺便提高一下记忆. 上一篇介绍了直接使用控件和使用控件打包程序对控件进行编程的方法.个人感觉后者编程更方便.不说废话了: 头文件中所需要的类型指针对象 ...

  8. Java线程:概念与原理

    Java线程:概念与原理 一.操作系统中线程和进程的概念 现在的操作系统是多任务操作系统.多线程是实现多任务的一种方式. 进程是指一个内存中运行的应用程序,每个进程都有自己独立的一块内存空间,一个进程 ...

  9. 织梦系统“当前位置”{dede:field.position}的修改方法

    dedecms中修改当前位置{dede:field.position},就是只要首页>一级栏目>二级栏目这样.找到include/typelink.class.php,找到这个文件里的这个 ...

  10. win10删除导航栏文档等图标,去除快捷方式

    去除快捷方式字样 找到[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer],在右侧窗格新建或修改名为“link” ...