一 .宏定义 #define
宏定义
宏定义会在预处理的时候,用宏定义的值来替换宏的名称
定义格式
"#define 宏名称 宏值
#define COUNT(宏名称) 5(宏值)
应用场景
企业开发分为开发阶段和部署阶段
例如在程序开发中会用到很多地址
#define URL "http://www.jianshu.com"
printf("%s\n",URL);
#include
#define COUNT 5 //定义宏
int main(){
int arr[COUNT] = {1,5,3,6,8};
for(int i=0;i
printf("arr[%i] = %i\n",arr[i]);
}
return 0;
}
注意点
宏定义后面不写分号 宏定义是单纯的替换
宏定义分为两种,一种是不带参数的宏定义,一种是带参数的宏定义
作用域
宏定义的作用域和全局变量很像,但是可以提前结束
从定义到文件末尾,可以通过#undef 宏名来结束
#define COUNT 5 //定义宏
#undef COUNT // 结束宏作用域
二 .条件编译
#if
#else
#elif----->else if
#endif---->不可以省略
条件编译会在预处理的时候执行,所以不能取到变量的值
条件编译一般配合宏定义使用,两个都是在预处理的时候执行
#include
#define COUNT 90 //定义宏
int main(){
#if 100 == COUNT //判断如果等于100 打印满分
printf("满分");
#elif COUNT>60 // 如果大于60 打印及格
printf("及格了");
#endif
return 0;
}
三. 文件包含#include
执行时间
include会在预处理的时候执行
#include
会先从编译器的环境中查找对应的文件,如果没有再从系统的环境中查找对应的文件
编译器--->系统
include "文件名"
会先从当前项目环境中查找对应的文件,如果没有再从编译器的环境中查找对应的文件,如果还是没有才会在系统中查找对应文件
当前项目--->编译器环境--->系统
注意点
不可以重复包含文件进行导入
A文件包含B文件, B文件包含A文件
四 .typedef
作用
给数据类型启别名
格式
typedef 原来数据类型名称 新的名称
注意点
typedef 相当于给原来的数据名称 , 定义了一个新的名字罢了
int a = 100;
typedef int ZS ---给int 定义一个名称 ZS
ZS b = 200; ----------相当于 int b = 200;
应用场景
typedef 一般用于给复杂的数据类型起名字,方便将来调用
例如
* 结构体
* 指针
* 指向函数的指针
* 指向结构体的指针
给普通指针起名字
typedef char* String; ---让 char* 等于String
String name = " 简书 ";
给结构体/共用体/枚举起名字
结构体实例
#include
int main(){
//1. 先定义结构体再起别名
struct Person{
char *name;
int age;
};
typedef struct Person JGT; //给结构体 (struct Person) 定义新名字== JGT
JGT p; // 定义结构体变量等于-----> struct Person p
p.age = 23;
//2. 定义的同时起别名
typedef struct Person{
char *name;
int age;
} JGT;
JGT p;
p.age = 23;
//3. 定义同时起别名 省略结构名称 企业经常使用的方法
typedef struct{
char *name;
int age;
} Person;
Person p; //定义结构体变量
return 0;
}
给指向函数的指针起别名
注意点
如果给指向函数的指针起别名, 那么指针名称就是别名 企业开发经常使用, 随处可见
#include
int sum(int a,int b){
return a + b;
}
int main(){
//以前建立指向函数的指针
int (*funcP)(int,int) = ∑
int res = funcP(10,20);
printf("res = %i\n",res); // res = 30
//typedef 建立指向函数的指针 果给指向函数的指针起别名, 那么指针名 (funcP1) 就是别名
typedef int(*funcP1)(int,int);
funcP1 plus = ∑ // 建立指针plus == 函数sum的地址
int res2 = plus(4,5);
printf("res2 = %i\n",res2); // res2 = 9
return 0;
}
五 . const 关键字
const 用于定义一个常量
格式
const-->const 数据类型 变量名称;
**注意点
-181--20180912 未整理完