码迷,mamicode.com
首页 > 其他好文 > 详细

typedef和#define

时间:2015-06-28 17:30:52      阅读:107      评论:0      收藏:0      [点我收藏+]

标签:

typedef:在计算机编程语言中用来为复杂的声明定义简单的别名(给类型起别名,整体类型替换),与宏定义有些差异。它本身是一种存储类的关键字,与auto、extern、mutable、static、register等关键字不能出现在同一个表达式中,定义变量语法,有typedef表示定义的是类型的名字,没有typedef表示定义的是变量.
格式: typedef char *String; //给指针类型char *起别名为String(右边替换左边)
  String s1,s2;  //   typedef s1,s2  定义了两个char类型的指针s1,s2
 
#define:宏定义又称为宏代换、宏替换,简称“宏”.
格式: #define String char * ;//将代码里面的所有String都转换成char *
  String s1,s2;  //#define  定义了 一个char类型的指针s1,以及char类型的变量s2              
预处理指令分3钟,宏定义,条件编译,文件包含, 所有的预处理指令都是以#开头,预处理指令的作用域:从编写指令的那一行开始,一直到文件结尾,可以用#undef取消宏定义的作用,宏名一般用大写或者以k开头,变量名一般用小写
 
typedef与指向结构体的指针
语法格式:typedef 结构体 别名
// 定义一个结构体并起别名
typedef struct {
    float x;
    float y;
} Point;

// 定义了一个Point类型的指针并起起别名pp
typedef Point *PP;

int main()
{
    // 定义结构体变量
    Point point = {10, 20};/此处相当于下面代码
//struct {
    float x;
    float y;
  } point = {10, 20};
   
    // 定义指针变量
    PP p = &point;//此处相当于下面代码
// Point *P = &point;
   
    // 利用指针变量访问结构体成员
    printf("x=%f,y=%f\n", p->x, p->y);
    return 0;
}
 
typedef与指向函数的指针
格式:typedef 指针类型(*指针别名)(接受参数类型)
// 定义一个sum函数,计算a跟b的和
int sum(int a, int b) {
    int c = a + b;
    printf("%d + %d = %d", a, b, c);
    return c;
}

typedef int (*MySum)(int, int);

int main() {
    // 定义一个指向sum函数的指针变量p
    MySum p = sum;
   
    // 利用指针变量p调用sum函数
    (*p)(4, 5);
   
    return 0;
}
 

typedef和#define

标签:

原文地址:http://www.cnblogs.com/lizzie8023/p/4605779.html

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