码迷,mamicode.com
首页 > 其他好文 > 详细

指针常量和常量指针的区别

时间:2019-03-10 20:26:25      阅读:198      评论:0      收藏:0      [点我收藏+]

标签:操作   width   end   include   std   clu   ash   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;
}
    

 

 运行结果如下:

 技术图片

 

指针常量和常量指针的区别

标签:操作   width   end   include   std   clu   ash   com   修改   

原文地址:https://www.cnblogs.com/hsy1941/p/10506758.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!