2021.12.3 typedef和define区别

69 篇文章 3 订阅

1. typedef和define定义

typedef:通俗话说就是给一个类型起一个别名,例如把猫叫一个咪咪,以后碰到咪咪就知道是猫,在程序中也一样,将int * 叫为INT,那么在以下的程序中,只要碰到INT就知道它是int*,其定义格式为:typedef    类型   别名;//注意结尾这个分号不能少。因此,上面的int*叫做INT可以表示为:  typedef  int*   INT;

2. define

这个是宏定义,比如,#define  pi  3.14 //注意这个后面是没有分号的,以下程序中只要有pi都是3.14,看着只是一个替换,宏最后要进行屏蔽,用#undef。

从他们的定义看,好像感觉他两是一回事,那么到底是不是一回事?我们可以看看下面这个代码?

 这样定义一个变量时,他两意义是一样的,打印出来类型都是int *。

那如果两个变量放在一起定义呢?

 一起定义两个变量时,注意宏和typedef的区别,上面程序中的Pint  和PINT在前面都是int*,但是打印出来的类型确实不同的。

3. 那么在结构体中是如何用typedef呢?

 分析:将struct Student重新定义为Student,这样的话在C++主函数调用时直接用Student就可以,而且在上述的程序中,我们可以直接通过stu1.id直接去访问12345,然后去修改它,那么如果我想修改stu1中的姓名"caocao"改为"cao",也可以直接这样通过 . 吗?来试一下

 这里直接报错,因此,我们在去修改字符串时,应该同数组那块一样,通过字符串拷贝函数strcpy_s,加头文件#include<string.h>,正确结果如下:

 除了这种方式,还可以通过一个指针p去指向stu1,然后通过指针的方式去访问修改里面的元素,例如还是上面这个题,将其学号修改为54321,姓名修改为"cao",有

显然,这样也是可以操作的,在这个中我们要注意 .name 前面的*p要带括号,因为 . 的优先级高于*,还可以通过如下 ->来打印:

 注意:(1)结构体普通变量如何访问其成员:结构体中成员如果是字符串,不能用=去替换,必须得用字符串拷贝函数,strcpy_s()
(2)结构体指针变量如何访问其成员:可以通过->方式,(*p).name ==  p -> name  

               C语言自带解引用符号有:[ ], ->

4. 用typedef如何定义数组呢?

我们一般定义一个数组名为(整型数组):int arr[10]

在c++中用typedef定义数组有:

                    typedef   int    ARR[10];
                    ARR brr;//就是int brr[10];

 

5. 可以给别名再起别名 ,有
typedef int AAA;
typedef AAA BBB;

其实这个BBB就是AAA的类型,即:

 

  • 3
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 10
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值