C++——sizeof()、strlen()、length()、size()、字符数组、字符串

1、sizeof():返回所占总空间的字节数

(1)对于整型字符型数组

(2)对于整型或字符型指针

2、strlen():返回字符数组或字符串所占的字节数

(1)针对字符数组

(2)针对字符指针

sizeof():

运算符,编译时计算,参数:数组、指针、类型、对象、函数。

功能:获得保证能容纳所建立对象的最大对象字节数,不能返回动态分配内存空间大小。

strlen():

函数,运行时计算,参数:char *(字符型指针)

功能:返回字符串的实际长度,返回长度不包括'\0',即遇到'\0'就停止

str.length()、str.size():

功能:求string类对象的成员函数,字符串长度。

二者没有区别

char* ss1 = "abcdefhijk"; //ss1是指针,存储字符串首地址,指向字符串
//sizeof(ss1)=4或8 strlen(ss1)=10   sizeof(*ss1)=1  
//ss1是指针,32位下占4个字节,64位下8个字节    *ss1是第一个char字符=1    strlen(ss1)表示实际长度=10

char ss2[] = "abcdefhijk";
//sizeof(ss2)=11  strlen(ss2)=10  sizeof(*ss2)=1
//sizeof(ss2)为11,ss是字符数组,计算到'\0'位置,因此是(10+1) 作为参数退化为指针,*ss2是第一个字符

char ss3[100] = "abcdefhijk";
//sizeof(ss3)=100 strlen(ss3) =10 sizeof(*ss3)=1

char a[] = { 'a','b','c' };
//sizeof(a)=3  strlen(a)=7  sizeof(*a)=1

char b[] = { "abc" };
// sizeof(b)=4   strlen(b)=3 sizeof(*b)=1

string str1 = { 'a','b','c','\0','X' };
//sizeof(str1)=32    sizeof(*str1)错误写法 
//string类型无论有没有初始化,sizeof都为32(64位机下)  string不是内置类型

char str2[]= { 'a','b','c','\0','X' };
//sizeof(str2)=5   strlen(str2)=3
//strlen在遇到'\0'时停止,=3      

string str3 ;
//sizeof(str3)=32

char s0[] ="\0";
//strlen(s0)=0  sizeof(s0)=2 
//字符串里的'\0'是系统自动添加,而且不管原串里是否有'\0',故sizeof为2

char s1[] = { '\0' };
//strlen(s1)=0  sizeof(s1)=1

char s2[6]={'h','e','l','l','o','\0'} //字符串数组
char s3[6]="hello" //字符串数组,简化版写法
//以上两种完全相同,sizeof=6,strlen=5

char s4[5] = { 'h','e','l','l','o' }; //字符数组,因为没有'\0'
//sizeof(s4)=5,strlen(s4)=5

char s5[10] = { 'h','e'};   //其余八个自动赋值'\0'
//sizeof(s5)=10,strlen(s4)=2

 char s[10];
 s="abcd";
 //以上两行写法错误,只能初始化时写成 char s[10]="abcd";

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值