c/c++中的const

const基础知识(用法、含义、好处)

    const int a;
    int const b;
    const int *c;
    int * const d;
    const int * const e ;

含义:

第一个第二个意思一样 代表一个常整形数;

第三个 c是一个指向常整形数的指针(所指向的内存数据不能被修改,但是本身可以修改);

第四个 d 常指针(指针变量不能被修改,但是它所指向内存空间可以被修改);

第五个 e一个指向常整形的常指针(指针和它所指向的内存空间,均不能被修改)。

const的好处

合理的利用const,

1指针做函数参数,可以有效的提高代码可读性,减少bug;

2清楚的分清参数的输入和输出特性。

int setTeacher_err( const Teacher *p)
//const修改形参的时候,利用形参不能修改指针所指向的内存空间

结论:

C语言中的const变量

C语言中const变量是只读变量,有自己的存储空间

C++中的const常量

可能分配存储空间,也可能不分配存储空间

1 当const常量为全局,并且需要在其它文件中使用

2 当使用&操作符取const常量的地址

以下代码用在c中报错,c++中正确运行:

int main()
{
    const int a = 1;
    const int b = 2;
    int array[a + b] = {0};
    int i = 0;
    for(i=0; i<(a+b); i++)
    {
        printf("array[%d] = %d\n", i, array[i]);
    }
    printf("Press enter to continue ...");
    getchar();
    return 0;
}

结论:C++中的const修饰的,是一个真正的常量,而不是C中变量(只读)。

const和#define的区别

C++中的const常量类似于宏定义

const int c = 5; ≈ #define c 5

C++中的const常量在与宏定义不同

const常量是由编译器处理的,提供类型检查和作用域检查,宏定义由预处理器处理,单纯的文本替换。

时间: 2024-10-03 19:40:18

c/c++中的const的相关文章

C++ 类中的const关键字

//类中的const关键字 #include<iostream> using namespace std; class Point{ public: //这个const关键字本质上修饰的是this指针 int GetX() const //====>int GetX(const this) { //因为this被隐藏,所以const关键字只好写在函数后面 //x++; //加上const关键字 报错 error C3490: 由于正在通过常量对象访问“x”,因此无法对其进行修改 //这个

C++总结:C++中的const和constexpr

C++中的const可用于修饰变量.函数,且在不同的地方有着不同的含义,现总结如下. const的语义 C++中的const的目的是通过编译器来保证对象的常量性,强制编译器将所有可能违背const对象的常量性的操作都视为error. 对象的常量性可以分为两种:物理常量性(即每个bit都不可改变)和逻辑常量性(即对象的表现保持不变).C++中采用的是物理常量性,例如下面的例子: 1 2 3 4 5 6 7 struct A {     int *ptr; }; int k = 5, r = 6;

C++ 中有关const引用的一点小知识

在读<C++ Primer>时,发现之前对const的概念不是很清晰,只知道如何去使用,于是翻开const引用部分又阅读了一遍,发现有两点自己要注意的地方 1.const限定的对象不可以初始化非const引用 ex. 1 const int src = 512; 2 const int &ok_dest = src; //ok: 引用和初始化对象都是const 3 int &err_dest = src; //error : 引用为非const 原因很简单, src 是不可以被

详解C和C++中的const关键字

在讲下面的内容之前,要先看看这篇文章const.static变量的存储位置 一.C中的const 作用:(1)可以定义const常量,具有不可变性. (2)便于进行类型检查,使编译器对处理内容有更多了解,消除了一些隐患. (3)可以避免意义模糊的数字出现,同样可以很方便地进行参数的调整和修改. 同宏定义一样,可以做到不变则已,一变都变! (4)可以保护被修饰的东西,防止意外的修改,增强程序的健壮性. 还是上面的例子,如果在函数体内修改了i,编译器就会报错: (5) 可以节省空间,避免不必要的内存

C/C++中的const真正的用法

const基础知识(用法.含义.好处) intmain() { constint a; intconst b; constint *c; int* const d; constint * const e ; return0; } Intfunc1(const ) 初级理解:const是定义常量==>const意味着只读 含义: //第一个第二个意思一样代表一个常整形数 //第三个c是一个指向常整形数的指针(所指向的内存数据不能被修改,但是本身可以修改) //第四个d常指针(指针变量不能被修改,但

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

C与C++中的const

同样,有下面一段代码: 1 #include <iostream> 2 using namespace std; 3 4 int main() 5 { 6 const int i = 0; 7 int *j = (int *) &i; 8 *j = 1; 9 cout<<"i address = 0x"<<hex<<&i<<","<<"j address = 0x&qu

C/C++中的const与define

const int main() { const int a; int const b; const int *c; int * const d; const int * const e ; return 0; } 含义: 第一个第二个意思一样 代表一个常整形数 第三个 c是一个指向常整形数的指针(所指向的内存数据不能被修改,但是本身可以修改) 第四个 d 常指针(指针变量不能被修改,但是它所指向内存空间可以被修改) 第五个 e一个指向常整形的常指针(指针和它所指向的内存空间,均不能被修改) 结

C++中顶层const和底层const

1. 顶层 const 与底层 const 概念 指针本身是一个对象,由于,指针实际相应着内存单元的一段存储空间,然而,指针所指向的也是一个数据对象,因此,指针是一个常量与指针所指向的是一个常量是两个全然不同的概念, 顶层 const 表示的是 指针本身是一个常量, 底层 const 表示的是 指针所指的对象是一个常量,更普通情况下, 顶层 const 能够表示随意对象是一个常量,这对于算术类型.类.指针等不论什么数据类型都是成立的, 底层 const 则与指针和引用等复合类型的基本类型部分有关