码迷,mamicode.com
首页 > 编程语言 > 详细

在C和C++中struct与typedef struct的区别详细介绍

时间:2019-08-24 00:34:50      阅读:89      评论:0      收藏:0      [点我收藏+]

标签:style   详细介绍   报错   c中   strong   class   介绍   ali   不同   

c中测试code

 struct Cmstruct
    {
        int c;
    } Cm; // Cm是一个变量
    typedef struct MyStruct //这里的 Mystruct 可以省略
    {
        int m;
    } My; // My 是struct MyStruct 别名
    My st;
    struct Cmstruct cm1;
    // 只能使用struct Cmstruct来定义 不能使用Cmstruct
    st.m = 1;
    printf("%d\n", st.m); // 1
    // struct MyStruct st1; 报错,不能再用此方法,只能 My st1
    Cm.c = 10;
    printf("%d\n", Cm.c); // 10
    cm1.c = 22;
    printf("%d\n", cm1.c); // 22

 c++中测试code

struct Mystruct
    {
        int m;
    } cm; // 上面c中说过cm是变量
    cm.m = 20;
    printf("%d\n", cm.m); // 20
    struct Mystruct my; // 声明 my 可以省略 struct,但是c中不可以省略
    my.m = 10;
    printf("%d\n", my.m); // 10
    typedef struct Mystruct1
    {
        int s;
    } Sname; // Sname 是struct Mystruct1 别名
    Sname ss;
    ss.s = 22;
    printf("%d\n", ss.s); // 22

    struct Mystruct1 ss1; // struct Mystruct1中 struct 可以省略
    // 这里与C不同,在C中起别名后的struct不能再使用struct Mystruct1声明
    ss1.s = 33;
    printf("%d\n", ss1.s); // 22

总结:

C与C++相同点
没有typedef时候cm/Cm是声明的一个变量,有typedef时候My/Sname 是struct别名。
C与C++不同点
没有typedef时候,C只能用struct Mystruct来声明变量,C++中可以省略struct。
有typedef时候,C只能使用别名来声明变量,C++依然可以使用struct Mystruct或者省略struct。

在C和C++中struct与typedef struct的区别详细介绍

标签:style   详细介绍   报错   c中   strong   class   介绍   ali   不同   

原文地址:https://www.cnblogs.com/gavinpan/p/11395199.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!