C++里有结构体吗?
比如sturctA{strings;intk;}这样的?要是有的话,string类型占多大空间呢?求详解~~~~...
比如
sturct A
{ string s;
int k;
}
这样的?要是有的话,string类型占多大空间呢?求详解~~~~ 展开
sturct A
{ string s;
int k;
}
这样的?要是有的话,string类型占多大空间呢?求详解~~~~ 展开
展开全部
c++里面有结构体,
string 所占的内存由string类自己管理,
所以,不能确定其占的内存
比如
string s = "This is sample."
和
string a = "abc"
是不一样 大的
string 所占的内存由string类自己管理,
所以,不能确定其占的内存
比如
string s = "This is sample."
和
string a = "abc"
是不一样 大的
更多追问追答
追问
那么如果结构里的各个值需要输入的话,在定义结构体的时候,内存如何分配空间呢?
追答
. string是一个模板类型,也就是一个class(C++)(注意,它是一个类)。string的长度是无法明确取得的。也就是无法通过sizeof来取得,因为它不是一个基础类型,它本身并不固定长度,而取决于内部包含的字符。
光点科技
2023-08-15 广告
2023-08-15 广告
通常情况下,我们会按照结构模型把系统产生的数据分为三种类型:结构化数据、半结构化数据和非结构化数据。结构化数据,即行数据,是存储在数据库里,可以用二维表结构来逻辑表达实现的数据。最常见的就是数字数据和文本数据,它们可以某种标准格式存在于文件...
点击进入详情页
本回答由光点科技提供
展开全部
上面的错了!
string不是C++提供的标准数据类型,它是在类库中定义了的一个类class,所以他的空间大小早就分好了
在VC ++中占16个字节,在其他系统中会有所不同
所以在VC++6.0中
string s = "This is sample."和string a = "abc
是一样大的,不信,先定义一个对象然后,你可以用sizeof去验证一下
string不是C++提供的标准数据类型,它是在类库中定义了的一个类class,所以他的空间大小早就分好了
在VC ++中占16个字节,在其他系统中会有所不同
所以在VC++6.0中
string s = "This is sample."和string a = "abc
是一样大的,不信,先定义一个对象然后,你可以用sizeof去验证一下
更多追问追答
追问
是哦~不过不是说string类的空间是动态分配的吗?如果字符串很长,超过16个字节怎么办呢?为什么输出的还是16呢
追答
那是我们看不到的,当你定义了一个结构体对象时,那么这个对象的空间就分好了,而对数据成员string也分好了16个字节空间,如果大于了它分配的空间大小,则会混乱,但不会报错,超出的部分会覆盖原来的
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
有结构体,string作为类,他的空间是动态分配的,及在实例化之后才能确定,要先知道大学好像可以用s.length来获得长度
更多追问追答
追问
那如果结构体是这样的话,
sturct A
{ string s;
int k;
}
结构体的空间也是动态分配的吗? 求解~~
追答
string应该和char*类似吧,在没赋值之前不能确定具体的大小,一般将一个字符串赋值给string,该字符串是被定义为一个常量,string只是指向该常量的地址空间而已,所以在没有赋值之前不能确定他所指向的空间具体多大
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询