C++里有结构体吗?

比如sturctA{strings;intk;}这样的?要是有的话,string类型占多大空间呢?求详解~~~~... 比如
sturct A
{ string s;
int k;
}
这样的?要是有的话,string类型占多大空间呢?求详解~~~~
展开
 我来答
程序猿3号
2013-03-10 · TA获得超过1811个赞
知道小有建树答主
回答量:1029
采纳率:33%
帮助的人:757万
展开全部
c++里面有结构体,
string 所占的内存由string类自己管理,
所以,不能确定其占的内存
比如
string s = "This is sample."

string a = "abc"
是不一样 大的
更多追问追答
追问
那么如果结构里的各个值需要输入的话,在定义结构体的时候,内存如何分配空间呢?
追答
. string是一个模板类型,也就是一个class(C++)(注意,它是一个类)。string的长度是无法明确取得的。也就是无法通过sizeof来取得,因为它不是一个基础类型,它本身并不固定长度,而取决于内部包含的字符。
光点科技
2023-08-15 广告
通常情况下,我们会按照结构模型把系统产生的数据分为三种类型:结构化数据、半结构化数据和非结构化数据。结构化数据,即行数据,是存储在数据库里,可以用二维表结构来逻辑表达实现的数据。最常见的就是数字数据和文本数据,它们可以某种标准格式存在于文件... 点击进入详情页
本回答由光点科技提供
我爱李春霞123
2013-03-10 · 超过22用户采纳过TA的回答
知道答主
回答量:213
采纳率:0%
帮助的人:79.8万
展开全部
上面的错了!

string不是C++提供的标准数据类型,它是在类库中定义了的一个类class,所以他的空间大小早就分好了

在VC ++中占16个字节,在其他系统中会有所不同
所以在VC++6.0中
string s = "This is sample."和string a = "abc
是一样大的,不信,先定义一个对象然后,你可以用sizeof去验证一下
更多追问追答
追问
是哦~不过不是说string类的空间是动态分配的吗?如果字符串很长,超过16个字节怎么办呢?为什么输出的还是16呢
追答
那是我们看不到的,当你定义了一个结构体对象时,那么这个对象的空间就分好了,而对数据成员string也分好了16个字节空间,如果大于了它分配的空间大小,则会混乱,但不会报错,超出的部分会覆盖原来的
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
WoodChen
2013-03-10 · TA获得超过107个赞
知道答主
回答量:53
采纳率:0%
帮助的人:41.2万
展开全部
有结构体,string作为类,他的空间是动态分配的,及在实例化之后才能确定,要先知道大学好像可以用s.length来获得长度
更多追问追答
追问
那如果结构体是这样的话,
sturct A
{ string s;
int k;
}

结构体的空间也是动态分配的吗? 求解~~
追答
string应该和char*类似吧,在没赋值之前不能确定具体的大小,一般将一个字符串赋值给string,该字符串是被定义为一个常量,string只是指向该常量的地址空间而已,所以在没有赋值之前不能确定他所指向的空间具体多大
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式