一个小问题希望大神解答

//图片截取自菜鸟教程 - 学的不仅是技术,更是梦想! (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