常量
来源:互联网 发布:mac .m2文件夹 看不见 编辑:程序博客网 时间:2024/05/20 21:19
常量
常量就是一旦初始化后不能直接修改的变量。生活中的常量也是无处不在,例如每周都有7天,7就是一个整数常量。
C语言中的常量可以使用const修饰的变量和#define CONST_NAME CONST_VALUE两种方式来表示常量,如下程序所示。_
#include <stdio.h>/* const使用 const修饰的变量为常量,不能直接修改,但是可以通过指针修改 @author tony ittimeline@163.com @date 2017/10/31 17:49 @website www.ittimeline.net*/void const_sample() { const int num = 99; printf("num = %d\n",num); //num =99 不能直接修改 printf("num的地址是%p\n",&num); //* 用于根据地址取出指针指向变量的内容 //(int *) 常量地址类型转换为变量地址类型 *(int *)(&num) = 98; printf("修改之后num = %d\n", num);}
const定义常量的特点是无法直接修改,但是可以通过指针获取内存地址来实现间接修改,并不是严格意义的常量。
而#define定义的是严格的常量,因为无法获取内存地址,常量值在寄存器中产生。
同时使用#define定义的常量,可以实现批量修改。
#define PERSON_OF_NAME "tony" //定义字符串常量 /* #define用于声明宏常量,格式为 #define NAME value #define声明的常量是真正意义上的常量,一次赋值就永远无法修改 @author tony ittimeline@163.com @date 2017/10/31 17:58 @website www.ittimeline.net*/void define_sample() { //表达式必须是可以修改的左值 //PERSON_OF_NAME = "Tom";// 对宏常量进行再次赋值 直接报错}
使用#define实现代码混淆的应用案例
定义头文件define.h,内容如下
通过#define定义常量,可以实现代码混淆
#define 返回整数 int#define 主方法 main_define#define 参数列表 ()#define 左大括号 {#define 调用计算器 system("calc");#define 暂停 system("pause");#define 又大括号 }
定义源文件define.c,内容如下
#include "define.h"返回整数 主方法 参数列表 左大括号调用计算器暂停又大括号
然后运行define.c,程序的运行结果可以调用windows平台的计算器,按任意键后退出。