C++ 中的 const 类型变量】的更多相关文章

之前总感觉C/C++中有const 限定的变量是个很头痛的问题,一会儿能够变.一会儿不能够变,一会儿把const赋给nonconst,一会儿又把nonconst赋给const,头都被它搞大了.今天刚好把<C++ primer>中的相关部分又读了一遍,所以就把相关的内容写出来总结一下啦! 首先,我们能够想想为什么要设计const变量这样的东西,只是就是想有个常量嘛!所以对const类型变量进行操作的核心原则就是不能改变该变量的值.其它操作的话.const还是不const影响事实上不大. 然后我们…
同样,有下面一段代码: #include <iostream> using namespace std; int main() { ; int *j = (int *) &i; *j = ; cout<<"i address = 0x"<<hex<<&i<<","<<"j address = 0x"<<hex<<j<<end…
const类型变量--------------------------------------int i;const int *p; --------------------------------------int i;int *const p = &i;--------------------------------------int i;const int *const p = &i; 三者有何区别呢?-------------------------------------- 指向…
一,C++中const的基本知识 1.C++中const的基本概念 1.const是定义常量的关键字,表示只读,不可以修改. 2.const在定义常量的时候必须要初始化,否则报错,因为常量无法修改,只能在定义的时候才可以进行初始化. 2.C++中const的基本用法 # include<iostream> int main() { // 表示一个整数常量 ; // 表示一个整数常量 ; // 必须在定义定义常量的时候立即进行初始化 // int const c; 该语句报错,因为未进行初始化…
http://blog.csdn.net/eric_jo/article/details/4138548 C++中的const关键字的用法非常灵活,而使用const将大大改善程序的健壮性,本人根据各方面查到的资料进行总结如下,期望对朋友们有所帮助. Const 是C++中常用的类型修饰符,常类型是指使用类型修饰符const说明的类型,常类型的变量或对象的值是不能被更新的. 一.Const作用    如下表所示: No. 作用 说明 参考代码 1 可以定义const常量 const int Max…
在学习C++的过程中,经常被什么时候使用const.为什么使用const以及怎么使用const关键字这样的问题所困扰,以下是我对const的使用总结. 1.值替代 使用#define的确单缺点,第一:没有类型信息,这就会隐藏一些很难发现的错误:           第二:如果只是想取某个class的专属常量地址,#define无法创建一个class的专属常量         第三:#define或许不被视为语言的一部分,这样会导致PI可能不会被编译器看见,以至于在运用此常量时会产生错误信息:  …
“常量”与“只读变量”的区别. 常量肯定是只读的,例如5, "abc",等,肯定是只读的,因为常量是被编译器放在内存中的只读区域,当然也就不能够去修改它. “只读变量”则是在内存中开辟一个地方来存放它的值,只不过这个值由编译器限定不允许被修改.C语言关键字const就是用来限定一个变量不允许被改变的修饰符(Qualifier). 在ANSI C 语言中用enum类型和#define宏,这两个都可以用来定义常量. 类型声明中const用来修饰一个常量,有如下两种写法. 1).const在…
原创笔记,转载请注明出处! 点击[关注],关注也是一种美德~ 程序一: 我们知道数组的下标不能为变量,必须是一个确定的值.在C语言中看程序: #define a 10 int main() { //第一部分 int c=20; int d=10; int arr[c+d]; //第二部分 //int const a=20; //int const b=10; //int arr[a+b]; return 0; } 理所当然的编译错误,因为数组下标不能是变量. 在C++中看相同的程序.在C++中这…
CONST 一.符号常量 声明: const 类型说明符 常量名 = 常量值: const float PI = 3.1415927; //可以交换const与float的位置 符号常量在声明时一定要赋值,而在程序中间不能改变其值.注:const与“类型说明符“可以互换,即 ; ; //此两者等同 二.常对象及其常成员 2.1.常对象 声明: const 类型说明符 对象名: ,); //可以交换const与Point的位置 常对象必须时这样的对象:它的数据成员值在对象的整个生存期间内不能被改变…
C++中的const正常情况下是看成编译期的常量,编译器并不为const分配空间,只是在编译的时候将期值保存在名字表中,并在适当的时候折合在代码中.所以,以下代码: #include <iostream> using namespace std; int main() {   ;   ;   };   ; i < sizeof array / sizeof *array; i++)   {         cout << array[i] << endl;   }…
学习了下c++中的const关键字,总结如下. 1.const限制一个变量不能修改其内容,如果强行修改的话,如下面代码这样子,编译就会报错,“表达式必须是可修改的左值”. int main() { const int a = 6; cout << a << endl; a = 10; cout << a << endl; return 0; } 2.如果通过指针强行修改呢,如下面代码这样子. int main() { const int a = 6; cou…
const对象.指向const对象的指针.const指针(通过一个面试题来了解)   1.const对象 (1)关于const,很多企业的笔试.面试都会出现,很简单,就问你“const的含义?”. 我不清楚大家的回答,我的第一反应是常量,然后我想到了C#中关于const的解释(static and read-Only),于是我想到了只读,我只想到这么多. 看一下答案吧: 答:我只要一听到被面试者说:“const意味着常数”,我就知道我正在和一个业余者打交道.去年Dan Saks已经在他的文章里完…
C++中的const可用于修饰变量.函数,且在不同的地方有着不同的含义,现总结如下. const的语义 C++中的const的目的是通过编译器来保证对象的常量性,强制编译器将所有可能违背const对象的常量性的操作都视为error. 对象的常量性可以分为两种:物理常量性(即每个bit都不可改变)和逻辑常量性(即对象的表现保持不变).C++中采用的是物理常量性,例如下面的例子: struct A { int *ptr; }; int k = 5, r = 6; const A a = {&k};…
const成员变量 举个例子 #include <iostream> using namespace std; class A { public: A(int size) : SIZE(size) {}; private: const int SIZE; }; int main() { A a(); } 说明 在类中声明变量为const类型,但是不可以初始化 const常量的初始化必须在构造函数初始化列表中初始化,而不可以在构造函数函数体内初始化 但是 此时的const变量属于具体的一个对象,…
总结一下在非类中使用const关键字定义常量时的初始化问题,亲测VS2015.顺便记录#define宏和typedef的区别. 1 首先对const声明的常量的初始化做简单小结: , w2 = , w3 = ; int * const p1 = &w1, P1_1; //p1:指针常量,指针是常量; //p1_1:int型变量 ; //p2:常量指针,指向常量的指针; //p2_2:int const型 ; //p3:常量指针,指向常量的指针: //p3_3:const int型 ; //tem…
//类中的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”,因此无法对其进行修改 //这个…
http://www.cnblogs.com/ymy124/archive/2012/04/16/2451433.html const给人的第一印象就是定义常量. (1)const用于定义常量. 例如:const int N = 100;const int M = 200;      这样程序中只要用到 N.M 就分别代表为整型100.200,N.M 为一常量,在程序中不可改变.      但有人说他编程时从来不用const定义常量.我相信.但他是不懂得真正的编程艺术,用const定义常量不仅能…
C++/CLI中的const literal initonly 友元 C++/CLI中的const Visual C++并不允许在const对象上调用成员函数,除非该成员函数也被声明为const. C++/CLI托管代码中,无法把任何类型的函数声明为const:但可以把一个对象声明为const:然而由于无法编写const函数,这种const对象也几乎没有办法进行操作.           我们可以在句柄和函数实参中使用const:就像对指针使用const一样当:我们把一个引用传递给一个函数但有希…
    入门教程:C++中的const限定修饰符 const修饰符可以把对象转变成常数对象,什么意思呢? 意思就是说利用const进行修饰的变量的值在程序的任意位置将不能再被修改,就如同常数一样使用! 使用方法是: const int a=1;//这里定义了一个int类型的const常数变量a; 但就于指针来说const仍然是起作用的,以下有两点要十分注意,因为下面的两个问题很容易混淆! 我们来看一个如下的例子: #include <iostream>  using namespace std…
1,C 语言中的 const: 1,const 修饰的变量是只读的,本质还是变量: 1,C 语言中的 const 使变量具有只读属性: 2,const 只在编译期有用,在运行期无用: 3,const 修饰的局部变量在栈上分配空间: 1,可以有办法改变空间中的值,此时 const 修饰的值就改变了: 4,cosnt 修饰的全局变量在只读存储区分配空间: 1,const 将具有全局生命周期的变量存储于只读存储区: 2,如果修改了 const 修饰的全局变量,程序将产生崩溃,因为我们修改了只读存储器的…
知识回顾:C语言中 const const 修饰的变量是 只读的,本质上还是变量:(只读变量:可以通过指针修改只读变量中的值) const 修饰的局部变量在栈上分配空间: const 修饰的全局变量在只读存储区分配空间: const 只在编译期间生效,在运行期间无效: const 修饰的变量不是真的常量,它只是告诉编译器该变量不能出现在赋值符号的左边: #include <stdio.h> int main() { ; // c 是只读变量 int* p = (int*)&c; *p…
平时在开发时经常会用到 const,readonly,static 关键字,可以肯定这些关键词是完全不同的概念,但有时候他们在用法上很相似以至于在场景中不知道选择哪一个,这篇文章我们就来讨论 C# 中的 const,static 和 readonly 关键词,放在一起比较一下看看如何选择. 理解 const const 常用来定义一个常量,什么意思呢?就是这个常量在你程序的生命周期内都不会被改变,因此,必须在声明常量时为其赋值,从技术角度上来说:这个常量值又被称为 编译时 值,用 const 定…
1 C中的const C中const修饰的变量是只读变量,在使用const关键字声明定义变量时会给该变量分配内存空间. const修饰的全局变量默认是外部链接的,即其它源文件可以直接使用该变量. const修饰的局部变量存储在栈区中,不能通过变量名直接修改该变量的值,但是可以通过指针的方式修改该变量对应的值,从某种意义上来说,C中const修饰的变量不是真正意义上的常量,可以将其当作一种只读变量. C中const示例: // fun.c // c中const修饰的全局变量默认是外部链接的 con…
const的用法,特别是用在函数后面 在普通的非 const成员函数中,this的类型是一个指向类类型的 const指针.可以改变this所指向的值,但不能改变 this所保存的地址. 在 const成员函数中,this的类型是一个指向 const类类型对象的 const指针.既不能改变 this所指向的对象,也不能改变 this所保存的地址.   关键字:Const,Const函数,Const变量,函数后面的Const 看到const关键字,C++程序员首先想到的可能是const常量.这可不是…
1.const用于修饰普通变量,表示常量,不建议修改,某种程度上不允许修改(其实也是可以修改的) 指针常量 :指针(指向的变量的值)自身是一个常量,说明不能改变自身的指向  int* const p=&a;  常量指针 :指向常量的指针,指针可以修改指向 但是不能修改指向的变量的值  const int* p;面试必杀技: const出现在*的左边    是常量指针 const int num = 19; const int * p = &num;//指向常量的指针 常见的面试题中,经常会…
作者:jostree 转载请注明出处 http://www.cnblogs.com/jostree/p/4235721.html 1.为什么使用 const int 而不使用 #define 在使用#define时,比如#define Max 10000,如果出现错误,编译器并不会提示Max,因为在预处理阶段已经把Max替换成了10000,因此编译器会莫名其妙的提示10000这个数字出现了错误,从而不利于程序debug,但是如果使用const int Max=10000,编译器就会准确的提示Ma…
一.const 1>对于const,记住关键的一点,它只是修饰右边的变量. 例如: - (void)viewDidLoad { [super viewDidLoad]; // const两种用法 // const:修饰基本变量p // 这两种写法是一样的,const只修饰右边的基本变量b ; // b:只读变量 ; // b:只读变量 // const修饰指针变量访问的内存空间,修饰的是右边*p1, // 两种方式一样 const int *p1; // *p1:常量 p1:变量 int con…
const int a; int const a; 这两个写法是等同的,表示a是一个int常量. 简记:const后面是什么就限定什么(因为C++标准规定,const关键字放在类型或变量名之前等价的).比如const int *p就是限定(*p),(*p)就是p指向的那段内存不能变,p的值可以改变:如果是int* const p就是限定p指针的值(p指向的对象). , b=; //声明变量. int *p; p=&a; //声明指针. *p=; 则const int *p限定(*p),*p不能变…
const 是constant 的缩写,“恒定不变”的意思.被const 修饰的东西都受到强制保护,可以预防意外的变动,能提高程序的健壮性.所以很多C++程序设计书籍建议:“Use const whenever you need”. 1.用const 修饰函数的参数 如果参数作输出用,不论它是什么数据类型,也不论它采用“指针传递”还是“引用传递”,都不能加const 修饰,否则该参数将失去输出功能.const 只能修饰输入参数: 如果输入参数采用“指针传递”,那么加const 修饰可以防止意外地…
在本文中呢,主要讲解四个方面,即:常量数据的与否和常量指针的与否中const如何对指针进行修饰: 1.指向非常量数据的常量指针 对于一个指向非常量数据的常量指针,我们应该清楚的知道,在这我们注重的是指针常量,因此,指针始终指向一个内存地址,即该指针存储的地址数据不变,同时也可以通过此指针进行对应存储地址的数据修改,同时需要注意的是,时刻谨记声明为const的指针在声明时必须被初始化.废话不多说,直接上程序测试: //本程序测试指向非常量数据的常量指针 //意在使得大家清楚 const 在修饰指针…