typedef可以同时为一个类型起两个别名?

本帖最后由 syrchina 于 2013-12-05 11:30:47 编辑

typedef struct

{

int x;

int y;

}name1, name2;//同时声明两个也可以?编译器是具体怎么操作的?

typedef struct

{

int x;

int y;

}name1, *pname1;//以前常用这种方式,想来应该是类似的

请高手指点迷津,谢谢

分享到:

更多

------解决方案--------------------

这个,多个都没有问题的阿!只要不重复就好!

------解决方案--------------------

#include

typedef int my_int1, my_int2;

int main(){

my_int1 a = 1;

my_int2 b = 2;

printf("%d,%d",a,b);

return 0;

}

输出:

1,2

typedef只是起了别名而已,编译器实际编译的时候,不是通过别名编译的,而是通过别名找到

typedef sometype alias1, alias2;

这个声明里的sometype进行编译。

typedef struct

{

int x;

int y;

}name1, name2;

name1 a;

实际编译的是:

struct{int x, int y} a;

-----------------------------

------解决方案--------------------

//char (*(*x[3])())[5];//x是什么类型的变量?

//

//分析C语言声明,关键是搞清楚这个变量是个什么东西(函数、指针、数组),

//是函数那么剩下的就是他的参数和返回值,

//是指针那剩下部分是说明他指向什么,

//是数组剩下的部分就是说明数组的成员是什么类型。

//解析C语言声明规则:

//从左侧第一个标识符开始,按照优先级进行结合。*表示是..的指针,const表示只读的,volatile表示可变的,[]表示是数组,()表示是函数。

//

//x和[3]结合说明是一个大小为3的数组,该数组指向了一个指针,该指针指向一个函数,该函数的无参数,返回一个指针,该指针指向一个大小为5的char型数组

#include

#include

char num[5];

char (*x00())[5] {

return #

}

int main() {

char (*x000)[5];//返回值

char (*(x00)())[5];//函数原型,参数为空,返回值为指针

char (*(*x0)())[5];//数组的元素,是个函数指针

char (*(*x[3])())[5];//是个数组,大小为3

x0 = x00;

x[0] = x0;

x[1] = x0;

x[2] = x0;

printf("typeid(x).name() is %s\n",typeid(x).name());

return 0;

}

//typeid(x).name() is char (* (__cdecl**)(void))[5]

c语言变量起别名,typedef可以与此同时为一个类型起两个别名相关推荐

  1. typedef int(init_fnc_t) (void) 和 typedef int(*init_fnc_t) (void)函数类型和函数指针的区别

    转载请注明原地址:http://blog.csdn.net/oyhb_1992/article/details/76975284 typedef int(init_fnc_t) (void)和 typ ...

  2. C语言再学习 -- 关键字typedef

    参看:C语言再学习 -- 结构和其他数据形式 参看:C语言再学习 -- 关键字struct(转) 参看:常见typedef 用法 参看:关于typedef的用法总结 一.typedef 介绍 type ...

  3. C语言入门与进阶——typedef与#define

    C语言入门与进阶--突破typedef与#define C语言里提供了typedef关键字,可是会容易和#define指令搞混淆 那怎么弄清楚呢?且看下文, 一.typedef 在了解typedef具 ...

  4. 变量的三要素是java_C语言变量三要素知识详解,C语言变量三要素没那么难

    1.变量的三要素 "变量的值"保存在内存的某个地方,如同使用门牌号确定地址一样,在内存中也给变量分配门牌号.在C的内存世界中,门牌号被称为变量的地址.即从变量中取值就是通过变量名找 ...

  5. C语言中的关键字,变量的定义,变量的命名规则,交换两个变量的值,驼峰命名法【 C语言变量名命名法则】

    C语言结构 C语言中的关键字 变量 变量的定义 变量的命名规则 交换两个变量的值 驼峰命名法 C语言结构 上图中我们可以看到最外层是程序,内部是所有的构成,我们从最里面开始说明. 当我们用计算机语言来 ...

  6. 玩转C语言之自定义数据类型-typedef

    玩转C语言之自定义数据类型-typedef 1 引言 引言:在C语言中没有提供字节类型,如果在工程中需要使用表示字节的变量时,该怎么办呢? 我们知道 1 个字节占用 8 个二进制位空间,解决这个问题的 ...

  7. 深入理解C语言变量和内存——整理篇

    版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/wangjun_huster/article/details/69486956 1.基本数据类型变量名 ...

  8. dos 改某个目录下所有文件的时间_go语言入门学习笔记(2)-DOS操作及go语言变量学习...

    API:application program interface:应用程序编程接口. 就是我们go的各个包的各个函数. 我们想要了解这些函数我们可以通过Go的中文网在线标准库文档: https:// ...

  9. C语言复习 —— const define typedef

    目录 1. const 关键字 2. define 宏定义 3. typedef的用法 3.1 typedef和const结合的陷阱 3.2 define和typedef的区别 3.3 typedef ...

最新文章

  1. 计算机网络基础 — 网络设备类型
  2. mvc @html.textboxfor 添加正则表示式,如何在C#/ MVC 4中的Html.TextBoxFor中输入占位符文本...
  3. 腾讯DevOps全链路解决方案
  4. 决策树之分类树快速理解
  5. 如何改变maven项目的pom文件中默认的主代码目录 以及默认的测试代码目录?
  6. java工厂到接口_Java基础——接口简单工厂
  7. codeforces 690D2 D2. The Wall (medium)(组合数学)
  8. 交友程序网站源码全套源码带APP源码+安装视频教程
  9. ESP32 开发笔记(四)LVGL控件学习 Roller 滑动选择控件
  10. 数字逻辑电路—全减器的实现
  11. 2019年系统架构设计师考试--从备考到拿证
  12. 【十】比例尺添加以及调整
  13. bldc不同载波频率_BLDC的双闭环老调不好,求帮助
  14. 8188gu驱动和su realtek_Realtek瑞昱RTL8192SU/RTL8188SU/RTL8192GU无线网卡驱动怎么样
  15. 如何免费生成资讯类App
  16. 狂神 Linux 学习笔记
  17. USART_ClearITPendingBith和 USART_ClearFlag的区别
  18. 【文献分享】将生态系统服务和景观连通性整合到生态安全格局优化中——以中国珠江三角洲为例
  19. R语言笔记一:R软件的下载、界面简介、帮助文档
  20. 音频信号处理(二)语音信号采集处理与基音周期

热门文章

  1. 关于《HTTP权威指南》
  2. DealComment (注释处理工具)
  3. Ubunt sudo免密码输入
  4. Android系统信息获取 之一:系统存储信息的获取(RAM,ROM,SDCard)
  5. tensorflow之修改数组的值
  6. RAID0、1、5、6、10介绍
  7. linux命令大全-比较常用的
  8. js 中堆和栈的应用与理解
  9. windows10中如何在d盘新建kaoshi.log文件_命令行备份Windows 10驱动amp;设备管理器中安装驱动。...
  10. 生日祝福html_更新,礼包选择,头像框及太子生日金币活动