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用法总结(通俗易懂)的更多相关文章

  1. c++ const用法小结

    const用法 1,定义全局变量的内存分配问题 #define  Pi_1  3.14       //使用#define宏 const double Pi_2 = 3.14    //使用const ...

  2. const用法

    一.const作用 二.const用法 1.修饰一般常量   修饰符const可以用在类型说明符前,也可以用在类型说明符后. 例如: ; ; 2.修饰常数组  修饰符const可以用在类型说明符前,也 ...

  3. 【转】话说C语言const用法

    原文:话说C语言const用法 const在C语言中算是一个比较新的描述符,我们称之为常量修饰符,意即其所修饰的对象为常量(immutable). 我们来分情况看语法上它该如何被使用. 1.函数体内修 ...

  4. static 与单例模式、auto_ptr与单例模式、const 用法小结、mutable修饰符

    一.static 与单例模式 单例模式也就是简单的一种设计模式,它需要: 保证一个类只有一个实例,并提供一个全局访问点 禁止拷贝  C++ Code  1 2 3 4 5 6 7 8 9 10 11 ...

  5. const用法详解(转)

    http://www.cnblogs.com/StudyRush/archive/2010/10/06/1844690.html 面向对象是C++的重要特性. 但是c++在c的基础上新增加的几点优化也 ...

  6. C++之常指针,指针常量,函数指针,const用法总结

    1.const char *p,char const *p,char * const p 对于C++而言,没有const * 修饰符,所以,const只可以修饰类型或者变量名.因而const char ...

  7. C++的那些事:const用法面面观

    一.const是什么 在 C/C++ 语言中,const关键字是一种修饰符.所谓“修饰符”,就是在编译器进行编译的过程中,给编译器一些“要求”或“提示”,但修饰符本身,并不产生任何实际代码.就 con ...

  8. 【三支火把】---C语言const用法总结

    C语言关键字const相信对于不少C语言新手是既陌生又熟悉的,好像经常见,但是却不知道为何用,怎么用?学习至此,总结一下const的用法,使用程序来帮助你理解该关键字,希望能帮到像我一样的新手. 我看 ...

  9. typedef,static,const用法

    一.typedef主要功能是定义一个已存在类型的别名,但是和宏并存 宏与typedef区别 1.宏定义只是简单的字符串替换 2.typedef定义的类型是类型的别名,typedef后面是一个整体声明, ...

随机推荐

  1. centos系统安装mysql

    方式一. 通过yum install mysql-server安装mysql服务器.chkconfig mysqld on设置开机启动,并service mysqld start启动mysql服务,并 ...

  2. 在 Excel 中设置图片

    package com.smbea.demo.excel; import java.awt.image.BufferedImage; import java.io.ByteArrayOutputStr ...

  3. Java Knowledge series 2

    JVM Analysis & Design The object-oriented paradigm is a new and different way of thingking about ...

  4. Android基础Activity篇——Menu

    1.创建一个menu 在res目录右击-->new-->Drirectory,创建menu,然后右击menu-->new-->Menu resource file 创建main ...

  5. python3线程介绍01(如何启动和调用线程)

    #!/usr/bin/env python# -*- coding:utf-8 -*- import osimport time,randomimport threading # 1-进程说明# 进程 ...

  6. Altium_Designer-原理图库如何添加低电平有效的管脚?

    在编辑元件原理图符号时,在display name选项中将要加低电平的字符后面都加上“\”即可,如图:

  7. 在ABAP里取得一个数据库表记录数的两种方法

    方法1:使用函数EM_GET_NUMBER_OF_ENTRIES 这个函数使用起来很简单,只需要将想查询的数据库表名称维护进输入参数IT_TABLES: 上图说明这个函数支持批量操作,我查询的两张表名 ...

  8. Selenium入门20 等待时间

    自动化过程中有的页面元素加载慢或者需要等待特定条件执行后续步骤,此时需添加等待时间: 1 time.sleep()  固定等待时间,需import time 2 webdriver隐式等待 无需引入包 ...

  9. 关于Content-Type: multipart/form-data的支持

    关于Content-Type: multipart/form-data的支持  发布于 537天前  作者 yzhang226  303 次浏览  复制  上一个帖子  下一个帖子  标签: 无 今天 ...

  10. 共变导数(Covariant Derivative)

    原文链接 导数是指某一点的导数表示了某点上指定函数的变化率. 比如,要确定某物体的速度在某时刻的加速度,就取时间轴上下一时刻的一个微小增量,然后考察速度的增量和时间增量的比值.如果这个比值比较大,说明 ...