const用法总结(通俗易懂)
const的意思可以概括为 “一个不能被改变的普通变量” ,使得const在一定程度上提高程序的安全性和可靠性。
const的几种情况:
1. const的普通用法
int const size;
const int size;
这两条语句都是把size声明为一个整数,他的值不能被修改。
可以在声明的时候对他进行初始化,
int const size =10;
错误用法:
const int size =10;
char buffer[size];
错误在于,size占用某内存块,C编译器不知道它在编译的值。并且,C默认const是外部连接的,所以写成const是可以的。
2.const用于指针
(1)
const int *p;
int const *p; //含义是指向常量的指针,指针的常量值不可以修改
两者相同,p是一个指向整形常亮的指针,可以修改指针的值,但不能修改指针所指向的值。
int b = 5;
int c = 3;
const int *p=&b;
*p=6; //错误,不能通过指针修改所指向的值;
p=&c; //正确,可以修改指针的值
(2)
int * const p; //含义是常量指针,p的值不可以修改
p是一个指针,指针p是常量,它的值无法修改,但是可以修改p所指向的整型的值。
int b = 5;
int c = 3;
int *const p = &b;
*p = 6; //正确,可以修改指针所值向的值
p =&c; //错误,不可以修改指针的值
(3)
const int * const p;
无论是指针本身还是它所指向的值都是常量。
简单的判断的方法:
- 如果const在 * 的左侧,则const用来修饰指针所指向的变量,即指针指向位常量;
- 如果const位于 * 的右侧,则const就是修饰指针本身,即指针本身就是常量。
3.const用于函数的形参
void foo(const int * p)
const用于形参时说明了形参在函数内部不会被改变。这种形式通常用于数组形式的参数中模拟传值调用。这也是const最有用之处,限定函数的形参,这样该函数将不会修改实参指针所指向的数据。这里需要注意得的是,是函数不应该去修改而不是不能修改。
4.声明常量的其他方法
C语言中可以用enum类型和#define宏来定义常量
#define MAX_SIZE 10;
int const max_size =10;
此处使用#define比使用const变量更好。
只要允许使用字面值常量的地方都可以使用前者,比如声明数组的长度。
const变量只能用于允许使用变量的地方。
const用法总结(通俗易懂)的更多相关文章
- c++ const用法小结
const用法 1,定义全局变量的内存分配问题 #define Pi_1 3.14 //使用#define宏 const double Pi_2 = 3.14 //使用const ...
- const用法
一.const作用 二.const用法 1.修饰一般常量 修饰符const可以用在类型说明符前,也可以用在类型说明符后. 例如: ; ; 2.修饰常数组 修饰符const可以用在类型说明符前,也 ...
- 【转】话说C语言const用法
原文:话说C语言const用法 const在C语言中算是一个比较新的描述符,我们称之为常量修饰符,意即其所修饰的对象为常量(immutable). 我们来分情况看语法上它该如何被使用. 1.函数体内修 ...
- static 与单例模式、auto_ptr与单例模式、const 用法小结、mutable修饰符
一.static 与单例模式 单例模式也就是简单的一种设计模式,它需要: 保证一个类只有一个实例,并提供一个全局访问点 禁止拷贝 C++ Code 1 2 3 4 5 6 7 8 9 10 11 ...
- const用法详解(转)
http://www.cnblogs.com/StudyRush/archive/2010/10/06/1844690.html 面向对象是C++的重要特性. 但是c++在c的基础上新增加的几点优化也 ...
- C++之常指针,指针常量,函数指针,const用法总结
1.const char *p,char const *p,char * const p 对于C++而言,没有const * 修饰符,所以,const只可以修饰类型或者变量名.因而const char ...
- C++的那些事:const用法面面观
一.const是什么 在 C/C++ 语言中,const关键字是一种修饰符.所谓“修饰符”,就是在编译器进行编译的过程中,给编译器一些“要求”或“提示”,但修饰符本身,并不产生任何实际代码.就 con ...
- 【三支火把】---C语言const用法总结
C语言关键字const相信对于不少C语言新手是既陌生又熟悉的,好像经常见,但是却不知道为何用,怎么用?学习至此,总结一下const的用法,使用程序来帮助你理解该关键字,希望能帮到像我一样的新手. 我看 ...
- typedef,static,const用法
一.typedef主要功能是定义一个已存在类型的别名,但是和宏并存 宏与typedef区别 1.宏定义只是简单的字符串替换 2.typedef定义的类型是类型的别名,typedef后面是一个整体声明, ...
随机推荐
- css随堂笔记(二)
css sub注释 注释不能嵌套 sub生成结构代码快捷 复合选择器 1.后代选择器 语法:选择器1 选择器2 选择器3 { 属性名:属性值 } 2.子代选择器 子代选择器语法: 选择器1> ...
- AJAX跨域POST发送json时,会先发送一个OPTIONS预请求
我们会发现,在很多post,put,delete等请求之前,会有一次options请求. 根本原因就是,W3C规范这样要求了!在跨域请求中,分为简单请求(get和部分post,post时content ...
- (十)JavaScript之【DOM定义】
DOM定义Document Object Model 文档对象模型 是干什么的?改变 HTML 元素的内容 (innerHTML)改变 HTML 元素的样式 (CSS)改变 HTML 元素的属性对 H ...
- Html编码(&#数字型)与解码小结 - 针对Puny Code(中文域名)的解码处理
学习并了解到Html编码的知识,源于工作中的产品需求.如果一个URL里面包含Puny Code(不仅仅指中文,还可能是韩文等Unicode里非英文的国家文字,本文以含中文的URL为例),而且这个URL ...
- js获取及判断键盘按键的方法
这篇文章主要介绍了js获取及判断键盘按键的方法,涉及JavaScript键盘事件的获取及键值的判定技巧,具有一定参考借鉴价值,需要的朋友可以参考下 本文实例讲述了js获取及判断键盘按键的方法.分享 ...
- TP5.1 配置的获取与设置
我们现在学习对配置文件的获取(Config::get)与设置(Config::set) 我们将学会: (1)获取到一级配置文件 (2)获取到二级配置文件 (3)设置二级配置文件 1.获取一级配置文件 ...
- Codeforces - Educational Codeforces Round 5 - E. Sum of Remainder
题目链接:http://codeforces.com/contest/616/problem/E 题目大意:给定整数n,m(1≤n,m≤1013), 求(n mod 1 + n mod 2 + ... ...
- NutDao配置多数据源
首先,我必须声明,这是一个非常简单的方法,很多小菜没做出来,是因为把nutz想得太复杂 数据源(或者是数据库连接池),在Nutz.Ioc看来,是一个普通的Bean,没任何特别之处. 再强调一点,除了$ ...
- 前端高质量知识(二)-JS执行上下文(执行环境)详细图解Script
先随便放张图 我们在JS学习初期或者面试的时候常常会遇到考核变量提升的思考题.比如先来一个简单一点的. console.log(a); // 这里会打印出什么? var a = 20; PS: 变量提 ...
- poj 2115 扩展欧几里得
题目链接:http://poj.org/problem?id=2115 题意: 给出一段循环程序,循环体变量初始值为 a,结束不等于 b ,步长为 c,看要循环多少次,其中运算限制在 k位:死循环输出 ...