码迷,mamicode.com
首页 > 编程语言 > 详细

C语言 typedef struct

时间:2016-08-22 12:05:58      阅读:178      评论:0      收藏:0      [点我收藏+]

标签:

结构体typedef struct的用法 和结构体的定义

 

结构体的定义:

1.

   struct Person {

    char name[20];

    char sex;

    float  height;

    int age;

};   只有结构体的定义

2.  

  struct Person {

    char name[20];

    char sex;

    float  height;

    int age;

} xiaohong;  附加该结构体类型的“结构体变量”的初始化定义结构体

 

这种定义就相当于

  struct Person {

    char name[20];

    char sex;

    float  height;

    int age;

};

struct Person  xiaohong; 

 

定义另一个结构体

struct Person xiaoming ; 定义一个变量名为xiaoming的结构体

 

这种每次都要加一个struct关键字的写法有点麻烦

 

3.

  typedef struct Person {

    char name[20];

    char sex;

    float  height;

    int age;

}Per; 这种写法在声明结构体变量的时候就可以用 Per xiaoming;

      如果没有typedef 就必须用 struct Person,这里的Per实际上就是 struct Person的别名

 

 

typedef的用法

typedef可以看作是type define 的缩写,意思就是定义类型,也可以说它是给已有的类型重新定义一个新的别名,而不是产生一个新的类型

typedef和宏定义有些类似,但是又有不同:

1.typedef给出的符号名称仅限于对类型,而不是对值

2.typedef的解释由编译器,而不是预处理执行

3.typedef比#define灵活

 

为什么要使用typedef ?

1.它可以使定义更加直观,从定义就可以了解变量的某些信息

typedef unsigned int BYTE;  将unisigned int 类型起一个别名 BYTE,  这样我们定义unisigned int 类型的变量的时候就可以这样写  BYTE x,y;

 

2.可以使程序参数化,提高程序的移植性

 type_myType doSomething(args *); 该函数的返回值是type_myType类型的,在一些系统中type_myType可能被定义成long类型,而有的系统中则被定义成 int类型,这样我们在移植程序的时候不需要再去修改函数的返回类型,只需要修改typedef定义就好了。

 

3.可以使表达式更加简洁,如上面的结构体的定义

 

使用typedef的定义的作用域取决于typedef语句的位置,如果定义在一个函数内部,他的作用域就是函数的内部,如果定义在函数外部,那么它的作用域就是全局。

 

C语言 typedef struct

标签:

原文地址:http://www.cnblogs.com/FYXin/p/5794719.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!