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); // }
c语言伪常量const理解的更多相关文章
- 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" ...
- C语言深度剖析---const关键字(转载)
const是constant的缩写,是恒定不变的意思.被const修饰的值,是只读变量. 1.const修饰只读变量,具有不变性 #include <stdio.h> int m ...
随机推荐
- 判断设备(PC,安Android,iOS)
//判断是不是PC function IsPC() { var userAgentInfo = navigator.userAgent; var Agents = new Array("An ...
- PTA编程总
7-1 币值转换 (20 分) 输入一个整数(位数不超过9位)代表一个人民币值(单位为元),请转换成财务要求的大写中文格式.如23108元,转换后变成“贰万叁仟壹百零捌”元.为了简化输出,用小写英文字 ...
- Html页面Dom对象之Event
HTML DOM Event 对象 实例 哪个鼠标按钮被点击? 光标的坐标是? 被按的按键的 unicode 是? 相对于屏幕,光标的坐标是? shift 键被按了吗? 哪个元素被点击了? 哪个事件类 ...
- 转-Vue.js2.0从入门到放弃---入门实例(一)
http://blog.csdn.net/u013182762/article/details/53021374 标签: Vue.jsVue.js 2.0Vue.js入门实例Vue.js 2.0教程 ...
- python轻量级ORM---peewee
版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/q454684431/article/details/31742367 peewee是一个轻量级的OR ...
- POJ1236学校网络——tarjan
题目:http://poj.org/problem?id=1236 Tarjan+缩点.温习一下Tarjan的写法. 1.在缩点后的TAG中,有几个联通块等价于有几个入度为0的点! 2.把它们都联通相 ...
- Web验证方式(1)--Http Basic Authentication
Http Basic Authentication是HTTP协议中定义的Web系统中的验证方式.参考wiki 主要的实现机制如下: 1. 用户通过浏览器匿名访问web资源. 2. web服务器检测到w ...
- linux系统报错日志学习
linux本身会自动记录系统报错日志:/var/log/messages 这个日志记录,我是在什么时候发现其强大的作用的呢?它有点像我们使用php脚本开发接口的时候技术员在重要地方打日志的效果,方便技 ...
- 访问https请求出现警告,去掉警告的方法
在顶部引多一个包即可 from requests.packages.urllib3.exceptions import InsecureRequestWarning,InsecurePlatformW ...
- 模板引擎文档 - layui.laytpl 介绍
<!DOCTYPE html> <html class="ui-page-login"> <head> <meta charset=&qu ...