C++ 浅谈 strlen 与 sizeof的区别

先举个栗子:

字符串数组跟字符串指针,然后分别使用sizeof跟strlen看输出结果。

char strA[] = "2017-7-19";

char *strB = "23333";

cout <<sizeof(a)<<ends<<sizeof(b)<<endl;

以上输出 10  4;

a字符串数组长度为10,因为其包含了结束符‘\0‘;

b字符串指针的长度是4,(32位机子下指针长度都是4,其他类型一致,无论指向多长的字符串)

倘若想测试最后一位是不是,循环到最后一位并且做个判断是不是‘\0‘即可。

cout <<strlen(a)<<ends<<strlen(b)<<endl;   【注意这里strlen的参数是char的类型】

以上输出 9 5;

strlen实际返回的是字符串的长度,即原本字符串数组中保存的数据长度/字符串指针中保存的数据长度。

时间: 2024-10-12 06:32:43

C++ 浅谈 strlen 与 sizeof的区别的相关文章

浅谈 Cookie 与 Session 的区别

1.cookie机制 Cookies是服务器在本地机器上存储的小段文本并随每一个请求发送至同一个服务器.IETF RFC 2965 HTTP State Management Mechanism 是通用cookie规范.网络服务器用HTTP头向客户端发送cookies,在客户终端,浏览器解析这些cookies并将它们保存为一个本地文件,它会自动将同一服务器的任何请求附上这些cookies . 具体来说cookie机制采用的是在客户端保持会话状态的方案.它是在用户端的会话状态的存贮机制,他需要用户

C语言——strlen()和sizeof的区别

strlen()和sizeof()的区别: strlen()——>C字符串库函数,返回字符串的真实长度.它是从内存某位置开始扫描,直到碰到结束符'\0'停止,返回计数器值. sizeof()——>操作符,返回的是变量声明后“占用”的内存大小,可能不是实际大小. int num; sizeof(num);  返回num占用内存大小.也可写作sizeof num (当后面是变量名时,可不加括号.) sizeof(int);  返回int型数据占用内存大小.(当后面是类型名时,一定要加括号.) 下面

浅谈SEO与SEM的区别

很多刚接触SEO的朋友,对于SEO都有一些迷茫和不解.今天,若言就简单的为大家介绍一下什么是SEO.什么是SEM.SEO与SEM的区别,希望对大家能有所帮助! 搜索引擎优化(Search engine optimization,简称SEO).针对搜索引擎的理论机制,对网站结构网页文字语言和站点间的互动外交策略,进行很里规划部署来发掘网站最大潜力.从而使其在搜索引擎具有较强的自然排名竞争优势.从而,促进企业在线销售和强化网络品牌. 讲得通俗一点,就是针对搜索引擎对自己的网站进行优化.SEO主要是通

函数strlen()和sizeof的区别

函数strlen()和sizeof的区别: #include<stdio.h> #include<stdlib.h> #include<string.h> #define SENTENCE "It is a cat" int main() { char name[40]; gets(name); printf("%s\n", name); printf("The size of name is %zd %d\nThe s

浅谈 unix, linux, ios, android 区别和联系

浅谈 unix, linux, ios, android 区别和联系 网上的答案并不是很好,便从网上整理的相对专业的问答,本人很菜,大佬勿喷 UNIX 和 Linux ??UNIX 操作系统(尤尼斯), 是一个强大的多用户.多任务操作系统,支持多种处理器架构,按照操作系统的分类,属于分时操作系统,最早由 KenThompson.Dennis Ritchie和Douglas McIlroy于1969年在AT&T的贝尔实验室开发.目前它的商标权由国际开放标准组织所拥有,只有符合单一UNIX 规范的

strlen与sizeof的区别

Sizeof与Strlen的区别与联系(转) 1.sizeof操作符的结果类型是size_t,它在头文件中typedef为unsigned int类型.该类型保证能容纳实现所建立的最大对象的字节大小. 2.sizeof是算符,strlen是函数. 3.sizeof可以用类型做参数,strlen只能用char*做参数,且必须是以''\0''结尾的.sizeof还可以用函数做参数,比如: short f();printf("%d\n", sizeof(f()));输出的结果是sizeof(

strlen 与 sizeof 的区别

void ngx_time_init(void) { ngx_cached_err_log_time.len = sizeof("1970/09/28 12:00:00") - 1; ngx_cached_http_time.len = sizeof("Mon, 28 Sep 1970 06:00:00 GMT") - 1; ngx_cached_http_log_time.len = sizeof("28/Sep/1970:12:00:00 +0600&

从内部入手,浅谈malloc和new的区别

想要理解一样事物,就要先用自己的语言去描述一件事物.在我查阅资料后,发现malloc函数简单说来就是空闲内存空间收集器,并把空闲空间关联起来,用术语来说就是:将空闲内存块合并起来并称为"闲置链表".然后在这块空闲空间进行划分,划出用户需要的与用户不需要的.然后把用户需要的给用户,不需要的返还给"闲置链表".而用户使用free释放时候也是扔回去的过程.但是这时候的空闲空间是间断的片段,malloc函数就需要去整理整合这些片段,若空间达不到用户需要,malloc就会返还

strlen和sizeof的区别

一.sizeof    sizeof(...)是运算符,而不是一个函数.    一个简单的例子:int a;cout<<sizeof a<<endl;    在头文件中typedef为unsigned int,其值在编译时即计算好了,参数可以是数组.指针.类型.对象.函数等.    它的功能是:获得保证能容纳实现所建立的最大对象的字节大小.    由于在编译时计算,因此sizeof不能用来返回动态分配的内存空间的大小.    实际上,用sizeof来返回类型以及静态分配的对象.结构