指针常量和常量指针的区别
Posted hsy1941
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了指针常量和常量指针的区别相关的知识,希望对你有一定的参考价值。
1、指针常量——指针类型的常量
在指针常量中,指针自身的值是一个常量,指针变量不允许修改。如同次指针指向一个地址该地址不能被修改,但是该地址里的内容可以被修改定义格式如下:
int *const a=5; 或 int a,b; int * const p=&a ;
p=&b;//操作错误
例:
#include <iostream> using namespace std; int main() { int a = 3; int m[2] = { 1, 2 }; int *const c = &a;//指针常量 cout << "c的地址:" << c << "c的值:" << *c << endl; c[0]=m[0];//改变地址的内容是合法的 cout << "c的地址:" << c << "c的值:" << *c << endl; }
地址没有改变,内容可以改变,输出如下:
2、常量指针——指向“常量”的指针
常量指针本质上是一个指针,常量表示指针指向的内容,说明该指针指向一个“常量”。在常量指针中,指针指向的内容是不可改变的,指针看起来好像指向了一个常量。
int a = 1, b = 2; const int *p = &a;//等价于int const*p=&a; p = &b; // 指针可以指向其他地址,地址可以改变,内容不可改变
例:
#include <iostream> using namespace std; int main() { int a = 3; int m[6] = {0,2,3,6,9,5}; int const *c = &a;//const int*c = &a;常量指针 cout << "c的地址:" << c << " "<<"c的值:" << *c << endl; c = &m[3];//可以改变指向地址,不能改变内容(*c=m[3]操作错误) cout << "c的地址:" << c << " " << "c的值:" << *c << endl; }
运行结果如下:
以上是关于指针常量和常量指针的区别的主要内容,如果未能解决你的问题,请参考以下文章