const和violate

const修饰变量

C语言中,const修饰的变量是只读的,本质还是变量,修饰的变量也会在内存中占用空间(这不废话么)本质上const只对编译器有用,在运行时无用。const和类型顺序无要求,一般类型在前,const在后。

const修饰的数组是只读的,修饰的数组空间不可被改变。

const int* p; //p可变,指向内容不可变

int const* p; //p可变,指向内容不可变

int* conse p; //p不可变,p指向内容可变

const int* const p//p和p指向的内容都不可变

口诀:左数右指

当const出现在*号左边时指针指向的数据为常量

当const出现在*号右边时指针本身为常量

const修饰函数参数和返回值

const修饰函数参数表示在函数体内不希望改变参数的值,const表示函数返回值表示返回值不可改变,多用于返回指针的情形。

const int * func()

{

static int count = 0;

count++;

return &count;

}

volatile可理解为“编译器警告指示字”

用于告诉编译器必须每次去内存中取变量值,主要用于修饰可能被多个线程访问的变量,也可以修饰可能被未知因数更改的变量。若一个变量长时间作为右值,容易被替换为一个常量。

时间: 2024-10-13 00:51:50

const和violate的相关文章

explicit,violate,volatile,mutable小结

转自:http://blog.csdn.net/helonsy/article/details/7091130 explicit:放在构造函数前面可以阻止构造函数的隐式类型转换.这样可以避免不必要的错误. violate:告诉编译器不要去假定这个变量的值,因为它随时可能会改变.这是为了阻止某些编译 器的优化策略直接从上次缓冲在寄存器里读取数据,而不从内存读. volatile关键字是一种类型修饰符,用它声明的类型变量表示可以被某些编译器未知的因素更改,比如: 操作系统.硬件或者其它线程等.遇到这

const mutable

在C++中,由const修饰的成员函数的函数体内部,是不能够对成员变量进行修改的.这个特性被用来保证某些成员函数在实现过程中,避免由于程序员大意而对数据进行了错误的修改:同时也说明此成员函数是非修改性的.如只需要返回成员变量的成员函数就被声明为const类型(const的位置在函数定义参数列表之后) 推广开来,在const成员函数中也不能够调用非const的成员函数.这是因为非const成员函数可能会改变成员变量的值,这与const成员函数的定义相违背. 但是在某些情况下,需要在const函数中

const指南

基本词义  意思就就是说利用const进行修饰的变量的值在程序的任意位置将不能再被修改,就如同常数一样使用! 使用方法 const int a=1;//这里定义了一个int类型的const常数变量a; 但对于指针来说const仍然是起作用的,以下有两点要十分注意,因为下面的两个问题很容易混淆! 我们来看一个如下的例子: //程序作者:管宁 //站点:www.cndev-lab.com //所有稿件均有版权,如要转载,请务必著名出处和作者 #include <iostream> using na

PHP 面向对象中常见关键字使用(final、static、const和instanceof)

PHP 面向对象中常见关键字的使用: 00x1.Final :final关键字可以加在类或者类中方法之前,但是不能使用final标识成员属性. 作用: 使用final标识的类,不能被继承. 在类中使用final标识的成员方法,在子类中不能覆盖. 总结:final表示为最终的意思,所以使用final关键字的类或者类中的成员方法是不能被更改的. 00x2.Static :static关键字将类中的成员属性或者成员方法标识为静态的,static标识的成员属性属于整个类,static成员总是唯一存在的,

const 放在函数后

const 放在函数后表示这个函数是常成员函数, 常成员函数是不能改变成员变量值的函数.const 限定符,它把一个对象转换成一个常量.举例:为了使成员函数的意义更加清楚,我们可在不改变对象的成员函数的函数原型中加上const说明:class Point{public:int GetX() const;int GetY() const;void SetPt (int, int);void OffsetPt (int, int);private:int xVal, yVal;};const成员函数

修改 const 的值之后的奇怪变化

1 #include <iostream> 2 3 int main(void) 4 { 5 const int a = 10; 6 int* p = (int*)&a; 7 *p = 20; 8 std::cout << a << "|" << &a << std::endl; 9 std::cout << *p << "|" << p <<

《const限定符的使用》

在程序中,对于数据,我们有一种数据希望给定了,就不会改变.书上常拿圆周率来举例! 我们把这类一开始就给定的数据,并且在程序运行过程中不改变的数据称为常量. 那么这里 也就说明了,如果要用const ,那么你要保证你那个数是个常量. 第一点:既然是不变,而我们又知道它的值,那么我们必须对他初始化.以后不能改变它! 第二点:常量在内存中有值,且伴随它所在的作用域存在,可以理解为大括号内. 第三点:const修饰什么,什么就是常量(下边将结合一些代码,给出几种常量类型) #include "stdaf

const总结

const const限定符将一个对象转换成一个常量,限定了其值不允许改变. 常变量 int const val=5;//两种方法都可以: const int val1=6;//因为常量在定义后不能改变,所以定义时必须初始化: 任何企图修改val和val1的操作都会引起编译错误: const引用 const应用是指向const对象的引用 不能将普通的引用绑定到const对象: const int r=10; const int &r1=r;//不能对r1赋值: int &r2=r;//错误

const的使用总结(转载)

C++中的const关键字的用法非常灵活,而使用const将大大改善程序的健壮性,本人根据各方面查到的资料进行总结如下,期望对朋友们有所帮助. Const 是C++中常用的类型修饰符,常类型是指使用类型修饰符const说明的类型,常类型的变量或对象的值是不能被更新的. 一.Const作用    如下表所示: No. 作用 说明 参考代码 1 可以定义const常量 const int Max = 100; 2 便于进行类型检查 const常量有数据类型,而宏常量没有数据类型.编译器可以对前者进行