指针和const
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了指针和const相关的知识,希望对你有一定的参考价值。
指针指向常量,类似于常量引用,指向常量的指针(pointer to const)不能用于改变其所指对象的值;
const 指针,指针本身为常量(const pointer),必须 初始化,指针的值不能改变
typedef int *pint;类型别名
const pint cpint = 0; //cpint是指向int的常量指针
const pint *pi; //pi是一个指针,它的对象是指向int的常量指针
不能将pint替换为int *
const int *cint = 0; //指向const int 的指针
const pint cpint = 0; //指向int的常量指针
1 #include <iostream> 2 using namespace std; 3 int main() 4 { 5 int ival = 1024; 6 int ival2 = 2048; 7 const int cival = 4096; 8 9 const int *pcint = &ival; //指向常量的指针 10 cout << *pcint << endl; //1024 11 12 pcint = &ival2; //指针的值可改变,指向的值不能改变 13 cout << *pcint << endl; //2048 14 // *pcint = 4096; //error:不能给常量赋值 15 int *const cpint = &ival; //常量指针(指针为常量) 16 // cpint = &ival2; //error:不能给常量赋值 17 *cpint = 4096; // ok 18 cout << *cpint << endl; //4096 19 20 const int *const cpicp = &ival; //指向常量对象的常量指针(指针和指向的对象都是常量) 21 22 // cpicp = &cival; //error:不能给常量赋值 23 // *cpicp = 4096; //error:不能给常量赋值 24 25 typedef int *pint; //基本数据类型为指针 26 const pint cint = &ival; //常量指针 27 cout << cint << endl; //0043FC60 28 cout << *cint << endl; //4096 29 30 const pint cint2 = &ival2; 31 // cint = cint2; //error:不能给常量赋值 32 *cint = 512; // ok 33 34 // pint const pcint = &ival2; //error 重定义:不同的类型修饰符 35 36 const pint *pi = &cint; // pi是一个指针,对象是指向int的常量指针 37 cout << pi << endl; //0043FC18 38 cout << *pi << endl; //0043FC60 39 cout << **pi << endl; //512 40 }
以上是关于指针和const的主要内容,如果未能解决你的问题,请参考以下文章