常量

来源:互联网 发布: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平台的计算器,按任意键后退出。