记住一个口诀“左内右本”:const出现在*的左边,则说明指针所指向的内容是常量const出现在*的右边,则说明指针本身是常量如果*左右两边都出现const,那么说明指针本事是常量,它所指向的内容也是常量.…
指针和Const限定符 1.指向const对象的指针 如果指针指向的是const对象,则不允许使用指针来改变其所指的const值.C++要求指向const对象的指针具有const特性. const double *cptr; //cptr是一个指向double类型const对象的指针. 此处const限定了cptr指针所指向的对象类型,而非cptr本身.即cptr本身并不是const.在定义时,不需要对它进行初始化,若需要,可使cptr指向另一个const对象,但不允许使用cptr来改变所指向对…
程序清单7.6 #include<iostream> using namespace std; ; int sum_arr(int arr[], int n);//函数声明 void main() { ,,,,,,, }; cout << cookies << " =array address," << sizeof cookies << " =sizeof cookies" << endl;…
const限定符和指针结合起来常见的情况有以下几种. const int *a; int const *a; 这两种写法是一样的,a是一个指向const int型的指针,a所指向的内存单元不可改写,所以(*a)++是不允许的,但a可以改写,所以a++是允许的. int * const a; a是一个指向int型的const指针,*a是可以改写的,但a不允许改写. int const * const a; a是一个指向const int型的const指针,因此*a和a都不允许改写. 指向非cons…
const一词在字面上来源于常量constant,const对象在C/C++中是有不同解析的,如第二章所述,在C中常量表达式必须是编译期,运行期的不是常量表达式,因此C中的const不是常量表达式:但在C++中,由于去掉了编译期的限定,因此是常量表达式. 对于一个指向const对象的指针pointer to const T,由于把const视作常量表达式,常常存在如下两种观点: 1.这是一个指向常量的指针,简称常量指针: 2.这个指针指向的内容不可改变. 这是比较粗糙的理解.虽然这个指针的类型是…
指向常量的指针,不能用于改变其所指对象的值. 指针的类型必须与所指对象的类型一致,但是有两个例外,第一种是允许令一个指向常量的指针指向一个非常量对象: double dra1 = 3.14; const double *cptr = &dra1;//正确,但不能通过cptr改变dra1的值 和常量引用一样,指向常量的指针也没有规定其所值得对象必须是一个常量.所谓指向常量的指针仅仅要求不能通过该指针改变对象的值,而没有规定那个对象的值不能通过其他途径改变. Tips:试着这样想,所谓指向常量的指针…
1.指向const的指针:const int *p 或 int const *p 解释:p是一个指针,指向const int类型的常量:指针指向的内容为常量,因此不能改变*p的值,但指针p可以改变,指向不同的const int常量 ; ; const int *p=&a; *p=; //error,p指向常量a,不能修改 p=&b; //ok,p只要指向const int类型即可 2.const指针:int *const p; 解释:p是一个指针,是指向int类型的const指针:指针p的…
刚开始接触C++时,指针和const之间的关系有点混乱,现在总结如下: 一.指向const变量的指针 #include<iostream.h> void main() { const int *p=NULL; ; p=&a; cout<<"*p="<<*p<<endl; ; p=&b; cout<<"*p="<<*p<<endl; //*p=200; 错误,不能通过修…
与引用一样,也可以令指针指向常量或非常量,类似于常量引用,指向常量的指针不能用于改变其所指对象的值.要想存放常量对象的地址,只能使用指向常量的指针: const double pi = 3.14; // pi是个常量,它的值不能改变 double *ptr = π // 错误,ptr是一个普通的指针 const doublt *cptr = π // 正确,cptr可以指向一个双精度常量 *cptr = ; // 错误,不能给*cptr赋值 允许令一个指向常量的指针指向一个非常量对象: doub…
在C++中,const修饰符一般用于修饰常量.常量在定义的时候必须初始化,而且值一旦定义之后就不能修改,这样就能保证常量的值在程序运行过程中不会发生变换. 1.指向const对象的指针 指向const对象的指针本身的指向可以发生变换,但是不可以通过该指针修改所指向变量的值.指向const对象的指针在定义的时候无需初始化,而且这种类型的指针也可以指向普通变量,只不过不能通过该指针修改对应变量的值,即便对应变量不是常量.指向常量的指针在类型标识符前必须有const修饰符修饰,否则编译不通过. 指向c…