黑马程序员——C语言——typedef和#define
来源:互联网 发布:淘宝店铺美工 编辑:程序博客网 时间:2024/06/07 12:13
------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------
1. typedef
typedef是为数据类型起别名。
使用方式:typedef 原类型名 新类型名;
给基本数据类型起别名 eg: tepedef int myINT;
给数组起别名:typedef int ARRAY[5]; ARRAY a,b; //相当于int a[5],b[5];
给结构体起别名
struct Person{
char *name;
int age;
};
typedef struct Person p;
给枚举类型起别名:typedef enum Sex {kSexMale,kSexFemal} ISEX;
给函数指针起别名:typedef int (*FUN) (int, int); //FUN是一个别名
FUN f1,f2; //f1,f2都是函数指针。
2. #define——定义宏
无参宏定义:
#define 标识符 字符串 //标识符是宏名,字符串可以使常量、变量、表达式。
宏替换:源程序在编译之前,由预处理程序对我们写的源代码进行处理,会把源代码中所有出现宏名的地方一律使用宏的字符串去替换。
注意:
预处理指令经常写在函数之前
宏不是一个语句,是一个预处理指令,所以不需要加分号
宏有作用域,使用#undef可以取消宏定义
字符串中出现的宏不会被替换
宏可以嵌套定义:
#define R 4
#define PI 3.14
#define PI*R*R
可以使用宏起别名:#define INT1 int INT1 a=10;
有参宏定义:
#define SUM(a) a+a
有参宏实使用注意:
宏的形参之间可以出现空格,但是宏名和形参之间不能出现空格
在带参宏定义中,形参不分配内存单元,不需要写类型,不同于函数
有参宏的参数最好用括号括起来
宏定义可以定义多个语句
eg:#define M3(m,n) m=a+2;n=a*2;
3. typedef和#define的区别
#define是一个预处理指令,只是进行就简单的宏替换。
typedef是在编译时完成的,不是简单的替换,而是对类型说明符的重新命名。
#define INT1 int*typedef int* INT2;INT1 a1,b1; //a1是一个指针变量,但b1是一个普通变量INT2 a2,b2; //a2,b2都是一个指针变量
- 黑马程序员——C语言——typedef和#define
- 黑马程序员——C语言基础--关于typedef和define的重要区别记录以及typedef的经典例子
- 黑马程序员——C语言日志——typedef的使用以及和#define的区别
- 黑马程序员——C语言------typedef、static和extern
- 黑马程序员——c语言基础:枚举和typedef
- 黑马程序员IOS-C语言-预处理、define和typedef
- 黑马程序员——13-C语言之typedef
- 黑马程序员——【C语言】typedef的用法
- 黑马程序员——c语言复杂数据类型:结构体和枚举,typedef的使用
- 黑马程序员——C语言的关键字 typedef,static,extern和预处理指令
- 黑马程序员——C语言知识点总结之预处理指令和typedef关键字
- 黑马程序员———C语言———【枚举、typedef、宏、static和extern、文件操作】
- 【黑马程序员】iOS学习之路——C语言之宏定义、条件编译和条件包含及typedef
- C语言 define和typedef
- C语言 typedef 和 #define
- C——#define和typedef的用法与区别
- 标准C程序设计—define和typedef区别
- 黑马程序员——————c语言之typedef
- IOS学习之——图片缓存
- 操作系统概念(第九章) 虚拟内存
- Percona Toolkit包安装
- 使用Metal打造令人惊叹的游戏效果
- JAVA编程之安装工具和环境篇
- 黑马程序员——C语言——typedef和#define
- PE总结9 --PE文件结构之 解析导出表
- 关于VS调用第三方库
- 【java基础】java反射机制
- android 6.0 adb 编译
- setCoorType
- ImageSlider使用体会
- OpenCL
- 自定义鼠标选中样式