c语言预处理变量能否改变,C语言 预处理指令

一 .宏定义 #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 未整理完

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值