c语言 const常量作用,c语言伪常量const理解

const是伪常量,无法用于数组的初始化和全局变量的初始化,本质就是限定一个变量不能直接赋值。

如以下代码:

#define A 10

int arr[A];

//const本质,伪常量 ,无法用于数组初始化和全局变量初始化

/*

const int B = 10;

int arr[B];

*/

但是如果局部变量是能够初始化编译并运行的

void main()

{

const int B = ;

int arr[B];

}

const是伪常量,都知道常量是不能改变值的。例如这样是根本无法编译的。

void main() {

//num在栈区,只有栈区会自动回收释放

//局部const常量在栈区,而不在静态区(静态区会一直存在)

const int num = ;//num就是一个常量

//num = 11; //const本质,限定一个变量不能直接赋值

}

前面一直强调const是伪常量,因为可以间接的去改变它的值。利用指针变量

void main() {

//num在栈区,只有栈区会自动回收释放

//局部const常量在栈区,而不在静态区(静态区会一直存在)

const int num = ;//num就是一个常量

//num = 11; //error const本质,限定一个变量不能直接赋值

//间接改变常量值

const int *p = #//定义一个指针指向一个常量,存储num的地址

int *pv = (int *)p;//对指向常量的指针进行强制转换

*pv = ;//对指针指向内容赋值

printf("%d",num); //

}

1.2 - C#语言习惯 - 用运行时常量readonly而不是编译期常量const

C#中有两种类型的常量:编译期常量和运行时常量.二者有着截然不同的行为,使用不当将会带来性能上或正确性上的问题. 这两个问题最好都不要发生,不过若难以同时避免的话,那么一个略微慢一些但能保证正确的程序 ...

OC中修饰符:宏define 常量:const extern

const const最好理解,修饰的东西不能被修改 指针类型根据位置的不同可以理解成3种情况: I 常量指针 // 初始化之后不能赋值,指向的对象可以是任意对象,对象可变. NSString * c ...

C语言学习笔记--const 和 volatile关键字

1.const关键字 (1)const 修饰的变量是只读的,它不是真正的常量,本质还是变量,只是告诉编译器不能出现在赋值号左边! (2)const 修饰的局部变量在栈上分配空间 (3)const 修饰 ...

C语言中常量

C语言中常量 不具有数据类型的常量------宏常量 宏常量定义:用一个标识符号来表示的常量,又称为符号常量. 宏定义:  #define 标识符  字符串                 ----- ...

C++ const 理解

转载自:https://www.cnblogs.com/jiabei521/p/3335676.html 如果函数需要传入一个指针,面试官可能会问是否需要为该指针加上const,把const加在指针不 ...

常量Const

常量Const YEAR = 2019 # 全部大写的变量名为常量 注释 给不能理解的写一个描述 便于理解 增强可读性 三种形式 单行(当行)注释:# 只注释一行 不能换行 注释的代码不执行 不使用 ...

Java基础知识强化103:Java常量池理解与总结

一.相关概念 1. 什么是常量 用final修饰的成员变量表示常量,值一旦给定就无法改变! final修饰的变量有三种:静态变量.实例变量和局部变量,分别表示三种类型的常量. 2. Class文件中的 ...

java常量池理解

String类两种不同的创建方式 String s1 = "zheng"; //第一种创建方式 String s2 = new String("junxiang&quot ...

C语言深度剖析---const关键字(转载)

const是constant的缩写,是恒定不变的意思.被const修饰的值,是只读变量. 1.const修饰只读变量,具有不变性      #include int m ...

随机推荐

SQLite批量插入优化方法

SQLite的数据库本质上来讲就是一个磁盘上的文件,所以一切的数据库操作其实都会转化为对文件的操作,而频繁的文件操作将会是一个很好时的过程,会极大地影响数据库存取的速度.   例如:向数据库中插入10 ...

CSS样式-文字超出宽部分用省略号代替

.name {text-overflow: ellipsis;white-space: nowrap;overflow: hidden;display:block;width:120px;    }

express快速搭建web server

安装express4.x npm install -g express npm install -g express-generator //express命令行工具在4.x分离出来了 express ...

centos每天一句命令

shutdown -h now 立刻关机  后面可以加上关键的时间  -r 重启 reboot 重启  同时记载以下,仅仅给刚刚接触的新手来说的  按两次tab 键会自动命令 cd 到目录下 su r ...

Mysql的cmake编译与安装

Mysql的cmake编译与安装 实验准备环境: 我的操作系统是centos6.6 编译安装MariaDB之前,我们需要准备一些需要的环境 1.开发包组套件 [root@node19 ~]# yum ...

UVa 11988 - Broken Keyboard (a.k.a. Beiju Text) 题解

刘汝佳的题目,悲剧文本 -_-||| 这里使用vector容器倒置记录数据,然后从后面输出就能够了. 难度就是不知道这种文档究竟哪里是開始输出,故此使用动态管理内存的容器比 ...

Javascript 异步实现机制

Javascript 单线程指的是在一个浏览器进程中只存在一个 Javascript 执行线程,所以任务需要顺序排列等待执行,而不能像 Java 等多线程语言一样并发执行.但是这种单线程模型在处理耗时 ...

[Android] Android 使用 FragmentTabHost + Fragment 实现 微信 底部菜单

Android 使用 FragmentTabHost + Fragment 实现 微信 底部菜单 利用FragmentTabHost实现底部菜单,在该底部菜单中,包括了4个TabSpec,每个TabS ...

mysql from dual插入实现不插入重复记录

在mysql中插入一或者多条记录的时候,要求某个字段的值唯一,但是该字段没有添加唯一性索引,可用from dual解决. select * from (select '2015080109' a,2 ...

Linux下面安装和配置MySQL

如何从MySQL官方Yum仓库安装MySQL5.6 首先我们需要从MySQL开发者网站下载Yum仓库文件 Download MySQL Yum Repository 从上面的连接地址下载:Red Ha ...

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值