typedef在C和C++中的区别

偶然发现typedef在c和c++中是不一样的,在C中定义结构体必须要用到typedef,而在C++ 中定义结构体时用typedef和不用又有不同。

在C中,定义结构体是一定要用到typedef的,我们在C中定义一个简单的结构体:

typedef struct student
    {
        int Id;
        char name[10];
    }stu;
    stu stu1;
    stu1.Id=2;
    printf("%d\n",stu1.Id);
在上面的代码中,stu是一种结构体类型,相当于struct student的别名,如果想访问变量Id或者name,必须用stu定义一个结构体变量stu1,通过stu1来访问Id或者name。

在C++中,定义结构体可以直接这么写:

struct student
	{
		int Id;
		string name;
	}stu;
	stu.Id = 2;
	cout << stu.Id << endl;
这样可以直接用stu访问结构体中的变量。

但是如果加了typedef的话,

typedef struct student
	{
		int Id;
		string name;
	}stu;
	stu stu1;
	stu1.Id = 2;
	cout << stu1.Id << endl;
这个时候和C语言定义结构体就一样了,stu也是一种结构体类型,必须先用结构体类型定义一个变量,才能访问到结构体中的变量。

所以我们可以看到,在C++ 中简化了架构体的定义,可以不加typedef直接定义。


  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值