用typedef 给某一类型的指针定义一个别名,利用别名去定义指针

用typedef 给某一类型的指针定义一个别名

首先要了解typedef关键字是用来给数据类型定义一个别名,然后即可利用这个别名去定义变量,typedef关键字的作用请参考https://blog.51cto.com/peacefulmind/1141506
如代码:

typedef int zhengshu;
typedef int *zhengshuzhizhen;

这样定义之后,就可以用zhengshu去定义int类型的变量以及用zhengshuzhizhen去定义int型指针了,如下:

zhengshu x=1;
zhengshuzhizhen p;

这两句代码就等价于下面代码:

int x=1;
int *p;

敲黑板,重点在这
一定要注意这个别名是zhengshuzhizhen而非*zhengshuzhizhen,否则不就应该理解成是给int型定义了一个别名叫*zhengshuzhizhen?笔者试图说服自己努力的想了很多种理解方式去对接上正确的结果,那到底应怎样理解呢?绝不能死记硬背,这是自己学数据结构的底线😄
经查阅资料这样理解比较好:
第一种理解方式:
所有指针定义的语句中的“*”号都只是一个指针类型说明符,而非间接寻址运算符(这一点在C语言书中是明确指出的),所以从我们编程者的角度去理解指针定义的代码语句都应从后往前去读,如代码:

int *pa;

我们可以从后往前将该语句读为:pa是一个指针变量,它指向一个整型变量。
再如代码:

typedef int *zhengshuzhizhen;

我们可以从后往前将该语句读为:将zhengshuzhizhen定义为整形指针类型的别名,因此,便可用zhengshuzhizhen作为整形指针类型去定义指向整型变量的指针了
第二种理解方式:
int *定义了新别名zhengshuzhizhen
如果去这样理解的话,那倒是使得好多疑惑都迎刃而解了。比如,int *才表示是指针类型,定义一个整型指针时即可写为:

int *pa

这种与定义一个int型变量的理解方式一样,定义int型变量的代码为:int a;表示int是数据类型,a即为定义的int型的变量;
而指针定义的代码就理解为int *是数据类型,pa是定义的int *型的变量。
那给整型指针定义一个别名的写法,以及用法也就很好理解了:

typedef int *zhengshuzhizhen;

理解就是:给int *定义了新别名zhengshuzhizhen
欢迎你们给出更好的理解方式,或者指出我的这种理解方式对还是不对,共同努力💪

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值