//图片截取自菜鸟教程 - 学的不仅是技术,更是梦想! (runoob.com)
#include <iostream>
using namespace std;
struct su {
char a;
int c;
double b;
} de;
int main() {
cout << sizeof(su) << endl;
cout << sizeof(struct su) << endl;
cout << sizeof(de) << endl;
return 0;
}
/*
结果为
16
16
16*/
为什么三者都可以计算出所占的内存空间?
不是说“对类型不分配内存空间”吗?
是不是"结构体名"能直接当成"结构体变量"来使用?
“结构体类型名”和“结构体名”有什么区别吗?
类型是一类统称,比方说10和11都是int型,但是你不能说int型就等于10或者11.只能定义两个int型的变量,然后给他们赋值,比如,int a = 10; int b = 11;
另外,类型是可以计算其占用的空间的大小的,一个int型的大小是4,上面定义的两个变量,a和b的大小也都是4。计算占用空间大小时,实际是先找到变量的类型,然后计算类型所占空间的大小。
在你的例子中,可以理解为:结构体类型名就是你定义的su,de是它的一个别名。
su tt;这句话中,su就是结构体类型名。tt就是su类型的一个变量。
如有帮助,请采纳一下,谢谢。
sizeof可以直接对类型进行计算,但无法计算结构体中的指针指向的空间大小,固定大小数组是可以的
结构体名不能当变量用,这是两码事
看到你在问答里面提了一个问题 ,我有对应的课程专栏。希望能帮到你。
本人简介:https://blog.csdn.net/it_xiangqiang/article/details/115873169
C和C++完整教程: https://blog.csdn.net/it_xiangqiang/category_10581430.html
C和C++算法完整教程: https://blog.csdn.net/it_xiangqiang/category_10768339.html
您好,我是有问必答小助手,您的问题已经有小伙伴解答了,您看下是否解决,可以追评进行沟通哦~
如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~
ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632
非常感谢您使用有问必答服务,为了后续更快速的帮您解决问题,现诚邀您参与有问必答体验反馈。您的建议将会运用到我们的产品优化中,希望能得到您的支持与协助!
速戳参与调研>>>https://t.csdnimg.cn/Kf0y