1. 程式人生 > >指針常量和常量指針的區別

指針常量和常量指針的區別

idt 表示 變量 ima http info 但是 out png

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; }

運行結果如下:

技術分享圖片

指針常量和常量指針的區別