typedef:在计算机编程语言中用来为复杂的声明定义简单的别名(给类型起别名,整体类型替换),它本身是一种存储类的关键字,与auto、extern、mutable、static、register等关键字不能出现在同一个表达式中
语法格式:typedef 类型 别名
  typedef char *String; //给指针类型char *起别名为String(右边替换左边)
  String s1,s2;  //   typedef s1,s2  定义了两个char类型的指针s1,s2
 
#define:宏定义又称为宏代换、宏替换,简称“宏”,可以用#undef取消宏定义的作用
语法格式:#define 别名 类型
  #define String char * ;//将代码里面的所有String都转换成char *
  String s1,s2;  //#define  定义了 一个char类型的指针s1,以及char类型的变量s2       
      
 上面两个定义的格式说明了宏定义与typedef的区别,typedef是整体替换,替换后两个都是char *类型的指针,宏定义是替换一次,只有前面的才是char *类型的指针,后面则是char类型的变量
 
 typedef与指向结构体的指针
  // 定义一个结构体并起别名
  typedef struct{
  float x;
  float y;
  } Point;
  // 定义了一个Point类型的指针并起起别名p1
  typedef Point *p1;

  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;
  }
  //给函数类型的指针起别名 MySum
  typedef int (*MySum)(int, int);

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

     }
 

typedef和#define的更多相关文章

  1. typedef 和 #define 的区别

    本文已迁移至: http://www.danfengcao.info/c/c++/2014/02/25/difference-between-define-and-typedef.html typed ...

  2. typedef与#define的区别

    1.  typedef typedef故名思意就是类型定义的意思,但是它并不是定义一个新的类型而是给已有的类型起一个别名,在这一点上与引用的含义类似,引用是变量或对象的别名,而typedef定义的是类 ...

  3. typedef 和define的区别

    总结一下typedef和#define的区别 1.概念 #define 它在编译预处理时进行简单的替换,不作正确性检查.它是预处理指令. typedef 它在自己的作用域内给一个已经存在的类型一个别名 ...

  4. typedef和#define的用法与区别

    typedef和#define的用法与区别 typedef和#define的用法与区别 一.typedef的用法 在C/C++语言中,typedef常用来定义一个标识符及关键字的别名,它是语言编译过程 ...

  5. typedef 与define 的区别

    typedef和#define的用法与区别   typedef和#define的用法与区别 一.typedef的用法 在C/C++语言中,typedef常用来定义一个标识符及关键字的别名,它是语言编译 ...

  6. typedef 优于 #define

    案例一: 通常讲,typedef要比#define要好,特别是在有指针的场合.请看例子: typedef char *pStr1; #define pStr2 char *; pStr1 s1, s2 ...

  7. typedef和#define的区别

    转自:http://www.cnblogs.com/kerwinshaw/archive/2009/02/02/1382428.html 一.typedef的用法在C/C++语言中,typedef常用 ...

  8. typedef与define

    一.typedef用法 typedef常用来定义一个标识符及关键字的别名,它生效是在语言编译过程,但它并不实际分配内存空间.typedef可以增强程序的可读性,以及标识符的灵活性,但它也有“非直观性” ...

  9. typedef和define的作用域

    typedef: 如果放在所有函数之外,它的作用域就是从它定义开始直到文件尾: 如果放在某个函数内,定义域就是从定义开始直到该函数结尾: #define: 不管是在某个函数内,还是在所有函数之外,作用 ...

  10. typedef和define具体的具体差别

      1) #define是预处理指令,在编译预处理时进行简单的替换,不作正确性检查,不关含义是否正确照样带入,仅仅有在编译已被展开的源程序时才会发现可能的错误并报错.比如: #define PI 3. ...

随机推荐

  1. JAVA 中SQL字符动态拼接

    select SYR,SFZMHM,CJRZH,XSZBH,HPHM,CLSBDH,FDJH,CLLX,ZDYZT,to_char(CCDJRQ,'YYYY-MM-DD') CCDJRQ from V ...

  2. loadrunner获取Http信息头中指定值作为参数

    ); //web_save_header(RESPONSE,"response header"); //web_save_header(REQUEST,"request ...

  3. android.net.wifi的简单使用方法

    获取Wifi的控制类WifiManager.  WifiManager  wm=(WifiManager)getSystemService(Context.WIFI_SERVICE); 接下来可以对w ...

  4. 彻底理解position与anchorPoint

    引言 相信初接触到CALayer的人都会遇到以下几个问题: 为什么修改anchorPoint会移动layer的位置?CALayer的position点是哪一点呢?anchorPoint与positio ...

  5. struct和union分析实例

    1.#include <stdio.h>#include <malloc.h>typedef struct _soft_array{    int len;    int ar ...

  6. 从HashMap透析哈希表

    ##扯数据结构 先看一下哈希表的概念: 哈希表是一种数据结构,它可以提供快速的插入操作和查找操作.第一次接触哈希表,他会让人难以置信,因为它的插入和删除.查找都接近O(1)的时间级别.用哈希表,很多操 ...

  7. The C Programming Language (second edition) 实践代码(置于此以作备份)

    1. #include <stdio.h> #include <stdlib.h> #include <math.h> #include<time.h> ...

  8. Hacker's guide to Neural Networks

    Hacker's guide to Neural Networks Hi there, I'm a CS PhD student at Stanford. I've worked on Deep Le ...

  9. 动态下载 Yahoo 网络数据存入 Microsoft SQL Server 再 Matlab 调用的一个完整例子

    % 编程环境: Matlab 2014a, win7 32bit, Microsoft SQL Server 2008r2 %% % 清屏 clc; clear all; close all; %% ...

  10. Solr之搭建Solr5.2.1服务并从Mysql上导入数据

    原文地址:http://www.bkjia.com/webzh/1026243.html