const int *p;int *const p;int const *p;const int *const a;

const int *p;和int const *p;

二者是一樣的,其中const 修飾的是int,表示指針所指的對象不可以通過該指針被改變(但是不代表這個對象不可以通過其他途徑改變),但是指針本身可以被改變。

eg:

#include<bits/stdc++.h>
using namespace std;
int a=1;
int b=2;
int const *x=&a;
const int *y=&a;
int main(){
    //指針所指的對象可以從a指向b
    x=&b;
    y=&b;
/*  編譯錯誤,指針所指對象的值不可以被改變。
    *x=10;
    *y=10;
*/
    b=3;a=4;
    cout<<*x<<" "<<*y<<" "<<a<<" "<<b<<endl;
    //輸出3 3 4 3
    //從這裏看出,雖然無法通過指針修改對象,但是對象的值還是可以改變。
}

int *const p;

表示可以通過該指針修改所指的對象的值,但是指針本身不能改變。

eg:

#include<bits/stdc++.h>
using namespace std;
int a=10;
int b=5;
int *const p=&a;
int main(){
    *p=0;
    //p=&b; 錯誤,指針不可以被改變
    cout<<a<<" "<<b<<" "<<*p<<endl;
    //輸出0 5 0
}

 

 

const int *const a;

既不能通過指針修改所指的對象的值,又不可以改變指針本身。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章