cpp和c中struct用法的区别
cpp和c中struct用法的区别
c中的struct
不使用typedef
C语言中,定义struct的语法如下:
struct [<tag>] { <member-list> <member-list> <member-list> ... } [<variable-list>];
也可以不给这种struct起名字,只是定义变量,比如下面这样:
#include<stdio.h> struct { int age; } a; int main() { a.age = 1; printf("a.age is %d", a.age); return 0; }
也可以先起好名字,然后再通过 struct <tag> <variable-list>;
声明变量。
#include<stdio.h> struct student { int age; }; int main() { struct student a; a.age = 1; printf("a.age is %d", a.age); return 0; }
注意,这个时候,就一定要加上 struct student a;
,而不能 student a;
不能少打一个 struct
。
如果要少打的话,只能通过 typedef struct <tag> <type>
自己指定。
#include<stdio.h> struct student { int age; }; typedef struct student Student; int main() { Student a; a.age = 1; printf("a.age is %d", a.age); return 0; }
更绝的是,typedef struct <tag> <type>
里,<type>
和 <tag>
可以同名。
比如定义了一个student的tag,可以通过 typedef struct student student;
,这样也是合法的。
#include<stdio.h> struct student{ int age; }; typedef struct student student; int main() { student a; struct student b; a.age = 1; b.age = 2; printf("a.age is %d\n", a.age); printf("b.age is %d\n", b.age); return 0; }
使用typedef
typedef
如果遇上了 struct {balabala}
,那就和定义变量没有任何关系了,就是纯粹的换名字。
typedef struct [<tag>] { <member-list> ... <member-list> } <type>;
用了typedef后,既可以通过 struct <tag> <var>;
的方式声明变量,也可以通过 <type> <var>;
的方式声明变量。
#include<stdio.h> typedef struct student{ int age; } Student; int main() { Student a; struct student b; a.age = 1; b.age = 2; printf("a.age is %d\n", a.age); printf("b.age is %d\n", b.age); return 0; }
这样的设计,真是让人吐槽。好的语言应该只有一种写法。
cpp中的struct
cpp里,当使用如下的语法来定义一个 struct tag
时
struct [<tag>] { <member-list> <member-list> <member-list> ... } [<variable-list>];
既可以像c语言那样通过 struct <tag> <var>;
来声明一个变量,
也可以不用写 struct
,而是通过 <tag> <var>
来声明一个变量。
#include <iostream> using namespace std; struct student { int age; }; int main() { student m; struct student n; m.age = 1; n.age = 2; cout << "m.age is " << m.age << endl; cout << "n.age is " << n.age << endl; return 0; }
参考
如果您有任何关于文章的建议,欢迎评论或在 GitHub 提 PR
作者:dutrmp19
本文为作者原创,转载请在 文章开头 注明出处:https://www.cnblogs.com/dutrmp19/p/16655457.html
遵循 CC 4.0 BY-SA 版权协议
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
2021-09-04 Windows安装RubyOnRails