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所指向的整型的值。

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变量只能用于允许使用变量的地方。 

原文地址:https://www.cnblogs.com/happying30/p/9350712.html

时间: 2024-11-02 18:54:00

const用法总结(通俗易懂)的相关文章

C++ Primer 学习笔记_25_类与数据抽象(11)--const 用法小结、static与const以及static const(const static)

一.const 用法总结 1.可以对const 的用法做个小总结: const int n = 100;  //定义常量 const Test t(10); const int & ref = n;   //const引用 int& ref = n;  //Error [const与指针] const int* p; //const出现在*前面,表示*p是常量 (*p = 200; //Error) int * const p2;  //const出现在*后面,表示p2是常量 (p2 =

C++中const用法总结

1. const修饰普通变量和指针const修饰变量,一般有两种写法:const TYPE value;TYPE const value;这两种写法在本质上是一样的.它的含义是:const修饰的类型为TYPE的变量value是不可变的.对于一个非指针的类型TYPE,无论怎么写,都是一个含义,即value只不可变.例如:const int nValue:         //nValue是constint const nValue:    // nValue是const但是对于指针类型的TYPE,

#define static const 用法 (转)

1.Define用法: define主要是用于宏常量定义的,使程序看起来更简洁明了,方便代码维护,#define定义的实质只是一个常数的名字,没有具体数据类型的,没有分配内存空间.在编译是会被编译器替换为该常数.每次使用该宏定义,就要进行编译并分配空间,若一个程序中多次使用define定义的数据,则就会有多份拷贝.这么做是为了提高程序的可读性,但安全性相对差点. 2.const用法: const定义的全局数据变量,其基本作用和define相同,但又在define的基础上增加了好多功能.const

【转】话说C语言const用法

原文:话说C语言const用法 const在C语言中算是一个比较新的描述符,我们称之为常量修饰符,意即其所修饰的对象为常量(immutable). 我们来分情况看语法上它该如何被使用. 1.函数体内修饰局部变量.例:void func(){const int a=0;} 首先,我们先把const这个单词忽略不看,那么a是一个int类型的局部自动变量,我们给它赋予初始值0. 然后再看const. const作为一个类型限定词,和int有相同的地位.const int a;int const a;是

const用法-read only

const用法详解 const 只读(read only) 示例一:只读的int型变量 int main(int argc,const char * argv[]){     const int a1;     int const a2;      //    a1 = 2; //    a2 = 3;     printf("%d\n",a1);     printf("%d\n",a2);    } 上面这个例子,在声明int类型的变量a1和a2时,用const

const 用法详解

const用法详解 面向对象是C++的重要特性. 但是c++在c的基础上新增加的几点优化也是很耀眼的 就const直接可以取代c中的#define 以下几点很重要,学不好后果也也很严重 const 1. 限定符声明变量只能被读 const int i=5; int j=0; ... i=j;   //非法,导致编译错误 j=i;   //合法 2. 必须初始化 const int i=5;    //合法 const int j;      //非法,导致编译错误 3. 在另一连接文件中引用co

C++中的const用法(2)

前面写过一篇博客介绍const用法:C++中的const用法 今天发现有个忙点,特此补充. 我们知道,一般const修饰指针时有三种情况. <span style="font-size:18px;">const int *p;</span> 这表示p指向一个int型的const变量,但是指针本身并不是const. int a = 0; int *const p = &a; 这种情况表示指针是const,一旦初始化不能指向另外的数据. int a = 0;

C/C++——const用法完整总结

一直以来都没有总结const修饰符的用法,总是感觉const的用法太多,要记住的情况太多,不能够掌握所有的情况,所以总是不了了之.但是如果没有彻底掌握const用法的话,心里总是感觉知识还欠缺很多,还要很多知识点没有掌握.如果自己真正的总结完之后,其实也只有这么多用法. const修饰数据成员,成员函数,类对象. const修饰数据成员 修饰数据变量,保证数据变量只能在定义的时候进行初始化,并且在程序的执行过程中不能被再次赋值. 1.修饰类中的数据成员变量,可以直接在声明的时候进行初始化(con

const用法归纳总结 C++

非常好的一篇分析const的总结归纳, 在此谢谢原作者:http://blog.csdn.net/zcf1002797280/article/details/7816977 在普通的非 const成员函数中,this的类型是一个指向类类型的 const指针.可以改变this所指向的值,但不能改变 this所保存的地址.在 const成员函数中,this的类型是一个指向 const类类型对象的 const指针.既不能改变 this所指向的对象,也不能改变 this所保存的地址. 关键字:Const

【c++】C++中const用法总结

1.      const常量,如const int max = 100; 优点:const常量有数据类型,而宏常量没有数据类型.编译器可以对前者进行类型安全检查,而对后者只进行字符替换,没有类型安全检查,并且在字符替换时可能会产生意料不到的错误. 2.      const 修饰类的数据成员.                                                                const数据成员只在某个对象生存期内是常量,而对于整个类而言却是可变的.因