关于C++字符串逆序输出的问题。

2025-02-27 02:36:15
推荐回答(5个)
回答1:

sizeof()请看string类的实现

应该有一个指针
char *p;
一个引用计数 size_t refcount;
一个长度 size_t len;
一个容量 size_t capacity 或者 capability
这样一个 string 对象;自己的大小(32Bit)大约为 16字节;

存储字符长的指针分配的内存, capacity ;
容量最小为字符串的长度(len)+1;
sizeof(a) 获取的是 string 对象a的大小,是固定的,
(32Bit系统)
大约为 16字节 。
a.size() 获取是a存储的实际字符串的大小 ;当 a="asd",时和strlen("asd") 一样 =3 ;
换成 sizeof() 如果容量比较大的话,开始输出的,是 asd 后面的没有设置的字符,可能是非打印字符,也可能是‘\0’,所以输出n多空白;如果容量比较小,可能会出错。

回答2:

1 a.size() 这是字符串string对象的函数,返回字符串的长度。
2 sizeof(a) 是返回对象a占用内存空间的大小,32操作系统,永远返回一个指针的长度4(字节);64位操作系统永远返回8(字节)。(因为实际字符串string类的实现是通过动态分配内存来存放字符串,并不占用对象sizeof计算的大小。)

自然,以程序逻辑该使用a.size()。

回答3:

size和sizeof的方法是不一样的,通俗的说一个表示a中的个数,一个表示a所占的空间大小,跟a的类型有关。

回答4:

因为sizeof得到的是类型所占的字节数,你的是string类型,应该这个值是16,所以输出的时候都是空的。但是size得到的是字符串的长度。

回答5:

size和sizeof 不一样。一般来说sizeof 更大。1个int=sizeof 就=4