结构体前面加不加typedef有什么区别?

为什么c程序中定义结构时经常要用到typedef呢?如:

 typedef struct _am_win_menutext { int idc  int message  } am_win_menutext

为什么不直接把结构名定义为am_win_menutext然后使用就可以了。
取个类型的别名有什么作用呢?
---------------------------------
那是因为不取别名的话,每次定义都要加struct
---------------------------------
“直接把结构名定义为am_win_menutext然后使用”
这样你在使用时必须这样

 struct am_win_menutext myval

定义了别名之后就可以

 am_win_menutext myval

这样可以更清晰。
---------------------------------
主要在c语言里这样使用 使得更方便.
c++就不用typedef 也可以直接使用结构体名.

c++中使用:

 struct test{int x  y }

就可以定义一个名为test的结构体,但c中很可能编译通不过。c语言并不支持在struct后使用标示符定义结构体的名字,test将会被忽略,这相当 于定义了一个没有名字的结构体。若定义一个该结构体对象test mt 将会提示未定义的test错误信息。所以,在c语言中,一般使用typedef来定义结构体,上面的例子可以改为:

 typedef struct _test{int x  y }test

_test要不要都可以。并且,第一个大括号不能像原来那样随便的换行写(因为是typedef)。

结论:反正就是加typedef兼容性更好,不然c++里能跑的代码用c编译器跑就出错了

参考文章:结构体前面加不加typedef有什么区别?

c/c++ 结构体前加不加typedef有什么区别?相关推荐

  1. 结构体前面加星号_C语言中带星号的类型指针有哪些特性

    C语言中带星号的类型指针有哪些特性 指针是什么?很多人说,指针就是地址,那这么说的人肯定是对指针有所了解,他们这么说也不能说全错,我只能在这里说:"他们并没有真正学会指针,如果想学好指针,请 ...

  2. c语言结构体定义和使用typedef,结构体定义typedef struct 用法详解

    typedef是类型定义的意思,typedef struct是为了使用这个结构体方便. 在了解typedef之前我们先来了解一下什么是结构体类型: C++提供了许多种基本的数据类型(如int.floa ...

  3. C语言中访问结构体成员时 点 . 和 箭头 - 的区别

    点(.)是用于结构体变量访问成员,箭头(->)是用于结构体指针访问成员. 例如: #include <stdio.h>int main(void) {struct Smy {int ...

  4. Nginx中location、proxy_pass后方加不加斜杠/的区别

    通过nginx访问 127.0.0.1/api/test 1.location和proxy_pass都不加斜杠 location /api {proxy_pass http://127.0.0.1:8 ...

  5. php 类static引用函数吗,php中在变量和函数前加static关键字之后的区别

    static全局变量和普通全局变量,static局部变量和普通局部变量,static函数与普通函数的区别?下面本文将一一为你解答. (1)全局变量(外部变量)的说明之前再冠以static 就构成了静态 ...

  6. MYSQL_BIND结构体_bindColumn、bindParam与bindValue的区别

    实例 bindColumn:绑定一列到一个 PHP 变量(类似于list()函数为变量赋值) //连接数据库函数 functionconnect() { try { $dbh = new PDO(&q ...

  7. 整数边界对齐方式_c中结构体边界对齐(转)

    c中结构体边界对齐(转) 2011-11-23 11:15:52|  分类: C&C++ |  标签: |字号大中小 C语言结构体对齐也是老生常谈的话题了.基本上是面试题的必考题.结构体到底怎 ...

  8. C语言结构体的大小 — — 内存对齐和位域

    C语言结构体对齐 C语言结构体对齐也是老生常谈的话题了.基本上是面试题的必考题.内容虽然很基础,但一不小心就会弄错.写出一个struct,然后sizeof,你会不会经常对结果感到奇怪?sizeof的结 ...

  9. c++ 结构体地址 转换成ulong_零基础入门之结构体字节对齐

    一.字节对齐的规则: 1.一般设置的对齐方式为1,2,4字节对齐方式.结构的首地址必须是结构内最宽类型的整数倍地址;另外,结构体的每一个成员起始地址必须是自身类型大小的整数倍(需要特别注意的是wind ...

最新文章

  1. 数据挖掘竞赛指南:曾经的数据挖掘少年,如今的阿里算法大佬
  2. hdu4454 三分 求点到圆,然后在到矩形的最短路
  3. 从家书到小票!看到海尔智家的转型是真的
  4. 2017年 第08届 蓝桥杯 Java B组 决赛真题详解及小结
  5. Python实现心跳保活TCP长连接
  6. 从行驶的车上向上抛球,球真的会回到原地吗?
  7. asp.net运行时动态修改主题
  8. Angular4.x+Ionic3 踩坑之路之打包时出现JAVASCRIPT HEAP OUT OF MEMORY的几种解决办法
  9. 解决Visual Studio 2008 下,打开.dbml(LINQ) 文件时,提示The operation could not be completed. 的问题。...
  10. python与office结合可以干什么-Python 进行Office开发(以Word为例)
  11. Spring定时器cron表达式
  12. 全套思源黑体合集(含ttf/ttc版/行高修正版)
  13. ROSCon 2019 机器人操作系统国际盛会
  14. Flash8-动态显示汉字乱码问题的解决
  15. Win7自带驱动备份功能使用教程
  16. 精品软件 推荐 Bootice(引导扇区维护工具)
  17. love2d 编译 android,Love2D游戏脚本在windows平台下打包exe发布教程
  18. [云原生专题-1]:总体-云原生初步探究,什么是云原生,云原生的基本特性
  19. n子棋,你能下赢电脑吗,来玩玩吧
  20. Labview Ethernetip TCP网口通讯欧姆龙PLC OmronNX1P2NJ501NJ301PLC标签通讯 CIP通讯比Fins通讯更完美

热门文章

  1. 路由器命令大全手册教程 4
  2. linux系统加硬盘容量,Linux系统扩展硬盘空间
  3. 如何删除一个员工编号及其全部主数据和事务数据?
  4. 输入记忆功能如何恢复
  5. SAP MM 评估类型 评估类别
  6. 销售订单行项目的装运点字段确认规则
  7. 不想工作就想创业?我劝你看完这档综艺再决定
  8. 老铁666,快手突然“快”不动了?
  9. oracle面临的挑战,Oracle SUN,严峻的挑战(一)
  10. python mulit函数_python – 将函数应用于MultiIndex pandas.DataFrame列