首页 > 其他分享 >常量

常量

时间:2023-01-19 15:57:27浏览次数:29  
标签:const 常量 编译 int v1 编译器

常量

常量概念

​ 在程序运行前就已经存在,它们被编译到可执行文件 中,当程序启动后,它们便会被加载进来。这些数据通常都会保存在 常量数据区中,该区的属性没有写权限。

常量定义

1. #define定义常量

​ 编译器在对其进行编译时,会将代码中的宏名称替换成对应信息。宏的使用可以增加代码的可读性

2. const

​ 将变量定义为一个常量。const是为了增加程序的健壮性而存在的

#define 和 const 的区别

  1. define是一个真常量,const是一个假常量

  2. 使用const定义的变量最终还是一个变量(只是编译器内进行了检查,发现有修改则报错)
  3. 编译器在编译期间对const变量进行检查,所以可以通过指针获取const修饰过的变量地址,强制将指针的const修饰去掉
const int nConst=5;
int *pConst=(int*)&nConst;
#define const
在编译期间查找替换 在编译期间检查const修饰的变量是否被修改
由系统判断是否被修改 由编译器限制修改
字符串定义在文件只读数据区,数据常量编译为立即数寻址方式,成为二进制代码的一部分 根据作用域决定所在的内存位置和属性

修改被const修饰的变量

#include <stdio.h>
int main(int argc, char* argv[]) { 
  const int n1 = 5;
  int *p = (int*)&n1; 
  *p = 6;
  int n2 = n1; 
  return 0; 
}

更改常量字串

​ 以下代码中 TCHAR *v1="Hello World";//常量字串 该常量字符串所在的页面属性为只读

	int LastError = 0;
	TCHAR *v1 = "HelloWorld";
	_tprintf(_T("%c\r\n"),v1[0]);//只读
	DWORD NewProtect = PAGE_READWRITE;
	DWORD OldProtect = 0;
	//虚拟保护
	BOOL IsOk = VirtualProtect(v1, 20, NewProtect, &OldProtect);
	if (IsOk == FALSE)
	{
		LastError = GetLastError();//更改页面属性
	}
	v1[0] = 'X';
	_tprintf(_T("%c\r\n"), v1[0]);

标签:const,常量,编译,int,v1,编译器
From: https://www.cnblogs.com/XiuzhuKirakira/p/17061652.html

相关文章

  • Jmeter学习:控制器--条件控制器/事务控制器/常量控制器/while循环控制器
    一、条件控制器功能:通过该组件,我们可以控制其下面的子/后代元素是否执行。条件判断支持通过变量和函数两种方式判断A:变量,比如${flag},如果值为true,则认为通过,否则认为......
  • 常量、函数、三大语句--(基本)
    常量的知识点1.字面常量比如:2、3、3.14就是字面上的不变的量 2.const修饰的常变量const修饰一个变量的时候,变量具有了常属性,也就是不能通过赋值去改变变量了,但它实际上......
  • python基础: python语法之注释、PEP8规范说明、变量与常量、变量的本质、命名规范、命
    目录python基础python语法之注释PEP8规范说明变量与常量变量的本质命名规范命名风格常量基本数据类型python基础python语法之注释注释:是对所写的代码的解释说明三种......
  • 是谁修改了常量的值
    前天在下班回家的路上,正在刷哔哩哔哩的语音识别的教程,同事打电话向我求助,莫名其妙一个常量的值变了,导致话单生成不正常。随后他将代码发到我的QQ上。printf("curr_......
  • 常量与变量
    在上一篇博客中我们有提到一个词叫做常量,现在就来讲讲它常量:指的是在程序运行过程中值不会发生改变的量其实我们也有写过,在这个输出语句中,这个1就是常量简单来说程序运行下......
  • 变量与常量
    1publicclassDemo4{2//变量与常量3/*4*1、所谓变量就是可以变化的量5*2、java变量是程序中最基本的存储单元,其要素包括变量名,变......
  • java基础06 变量、常量、作用域
    变量、常量、作用域变量variable变量:variablejava变量是程序中最基本的存储单元,其要素包括:变量名(标识符)、变量类型(数据类型)、作用域可以变化的量代表一片存储空间(这......
  • C#、TS和Dart对比3:编译时常量和运行时常量
    一、理清一下数据的命名习惯本地变量、本地常量、成员变量、成员常量、实例变量、静态变量、字段、属性......不同开发语言,对定义在方法和类中的数据有不同的命名方式。在......
  • Spring获取配置文件常量
    1.配置文件#policyFilepolicyFile.es.host=1.1.1.1policyFile.es.port=9200policyFile.es.hostname=xxxxpolicyFile.es.password=1234562.常量实体类importorg.springfra......
  • python教程2--数据类型、变量、 常量、 除法
    1.数据类型1.1整数Python可以处理任意大小的整数,包括负整数。Java中的整数是有范围限制的,比如int的范围限制在-2147483648-2147483647之间。1.2浮点数浮点数也就是小数,如果......