关于C++中strlen(str)和sizeof(str)

首先我们来看一段测试吧

#include"stdio.h"

main(){
    char str[10] = "I am Limor宸";
    printf("%d %d",sizeof(str),strlen(str));
}

输出的结果是:

从结果中我们可以看出sizeof(str)输出的是10而strlen(str)输出的结果是11那么是为什么呢?

我们来看看sizeof和strlen的区别

  strlen在计算字符串长度的时候,是以‘\0’为字符串结束的标志。

  sizeof是以分类的数组的实际所占的内存空间大小来计算长度的。

我们再来看看如果给定的分配空间比实际占用空间长的情况:

#include"stdio.h"

main(){
    char str[50] = "I am Limor宸";
    printf("%d %d",sizeof(str),strlen(str));
}

这时候我给str这个字符数组初始分配了50个空间,但是只占用了11个空间。

结果的话sizeof计算出来是50为str字符串数组所占用的实际空间

而strlen计算的结果是12,在后面没有被声明的空间没有被计算。

由此可见sizeof计算的是该数组占用的空间大小,strlen计算的是字符串的长度并吧‘\0‘结尾符也算作一个单位但是null并不计算。

原文地址:https://www.cnblogs.com/LimorC/p/11208040.html

时间: 2024-09-29 13:55:12

关于C++中strlen(str)和sizeof(str)的相关文章

PHP中常用的字符串函数str

1 字符串大小写函数 strtoupper($str) strtolower($str) 2 字符串切割函数 explode(',',$str) join(',',$str) implode(',',$str) 3 字符串长度函数 strlen($str) 4 字符串重复函数 str_repeat($str,2) 5 字符串首字符大写 ucfirst($str) 6 字符串单词首字符大写 ucwords($str) 7 去除两边指定字符 trim($str,',.?!') ltrim($str,

细说PHP中strlen和mb_strlen的区别

原文:细说PHP中strlen和mb_strlen的区别 在PHP中,strlen与mb_strlen是求字符串长度的函数,但是对于一些初学者来说,如果不看手册,也许不太清楚其中的区别.下面通过例子,讲解这两者之间的区别. $str='中文a字1符'; echo strlen($str);//字节个数 ,14 echo mb_strlen($str,'UTF-8');//选定内码为UTF-8,中文作为一个字节,6 echo mb_strlen($str,'gbk'); //8 echo mb_s

由 var str = 'hello world' str.attr ='666'; 到包装类型

近期有些小伙伴在公司的一道面试题踩了坑,  今天特地跟大家一起分享下: 原题如下: 1 var str = 'hello world'; 2 str.attr = '666'; 3 console.log(str); 4 console.log(str.attr) 当然也有不少反应机灵的同学 回答出了正确答案: 认为   console.log(str.attr)  的结果是个   undefined  ,一问原由,回答说   str 是个字符串类型 是不支持这些属性设置的. 于是反问到那么你平

char str[]和char *str的区别

1.http://blog.csdn.net/szchtx/article/details/10396149 char ss[]="C++";  ss[0]='c';                  // 合法 char *p="C++";  p[0]='c';                   // 合法但不正确 该段代码在VS2010下编译可以通过,但是运行时程序会停止工作,为什么呢?原因在于p[0]='c'这一语句.该语句试图修改p指向的字符串的首个字符,

Python:str.ljust()、str.rjust()、str.center()函数

str.ljust().str.rjust().str.center()函数 功能:调整字符串站位宽度,并确定字符串对齐方式: #可以用其它字符填充字符: #字符串长度 = 字符串个数(包含空格.标点符.转义符) 例一: #str.ljust().str.rjust().str.center()的用法 s = 'abc' #将字符串调整为宽带为20,并且右对齐的字符串 s1 = s.rjust(20) print(s1) #输出: abc #将字符串s的宽带调整为20,左对齐,并将空格处用 '=

Python3中内置类型bytes和str用法及byte和string之间各种编码转换

Python 3最重要的新特性大概要算是对文本和二进制数据作了更为清晰的区分.文本总是Unicode,由str类型表示,二进制数据则由bytes类型表示.Python 3不会以任意隐式的方式混用str和bytes,正是这使得两者的区分特别清晰.你不能拼接字符串和字节包,也无法在字节包里搜索字符串(反之亦然),也不能将字符串传入参数为字节包的函数(反之亦然). python3.0中怎么创建bytes型数据 1 2 bytes([1,2,3,4,5,6,7,8,9]) bytes("python&q

Matlab中cell类型转成str类型

在利用xlsread函数的时候,raw和txt图均为Cell类型,要进行转换为Str类型. 用char这个函数就可以了:>> cscs = 'abc' 'defg' 'hi'>> s = char( cs )s =abc defghi >> whos Name Size Bytes Class Attributes cs 3x1 198 cell s 3x4 24 char 原文地址:https://www.cnblogs.com/caizhao/p/8487579.h

【Python】python 中 json、class、str 的相互转换

参考: https://blog.csdn.net/qq_29201493/article/details/85697377 #!/usr/bin/env python # -*- encoding: utf-8 -*- ''' @File : garbage_test.py @Time : 2019/06/15 08:26:17 @Author : California Fruit @Desc : None ''' import json class Student(object): def

【字符串】strlen函数与sizeof的区别

对于 strlen 和 sizeof,相信不少程序员会混淆其功能.虽然从表面上看它们都可以求字符串的长度,但二者却存在着许多不同之处及本质区别. strlen 是一个函数,它用来计算指定字符串 str 的长度,但不包括结束字符(即 null 字符).其原型如下面的代码所示: 1 size_t strlen(char const* str); 也正因为 strlen 是一个函数,所以需要进行一次函数调用,调用示例如下面的代码所示: 1 char sArr[] = "ILOVEC"; 2