int *p,cons int *p,int const *p,int * const p,const int * const p,int const * const p的區別,consconst

來源:互聯網
上載者:User

int *p,cons int *p,int const *p,int * const p,const int * const p,int const * const p的區別,consconst


  1. 加有const關鍵字的幾種情況的辨析

const修飾的代碼

含義(特點)

等價性

int *p = #

1.      可以讀自己

2.      可以通過*p改自己

3.      可以通過p = &data來看別人

許可權最大

cons int *p = #

1、const放在左邊意味著指向的是常量,這個常量不可以修改,

2、p = &data; (地址可以修改)

3、*p = 30;(這個時候是錯誤的)

這兩者等價(應用:查看別人的賬戶)

int const *p = #

(和上面的等價)限定只能讀不可以修改,地址可以移動

int * const p = #

不可以修改自己的地址,但是可以通過*p來修改自己的值

 

const int * const p = #

不可以修改地址來看其它的值,也不可以修改自己的,只能看自己的

1、可看自己

2、不改自己

3、不能看別人

int const * const p = #

限定只能看自己的賬戶,只能讀不可寫

 

  1. 只能在初始化的時候才能夠賦值(const限定了不能隨便修改變數)

  2. const總結

const在’*’左邊意味著我指向的是常量。

const在’*’右邊意味著我指標式一個常量。

當把上面的p=&data;改成了*p = 3;這個時候就不可以了。如下:

 

  1. int const *p

  1. int * const p; 不可以修改自己的地址,但是可以通過*p來修改自己的值

可以通過*p的方式進行修改

6.const int * const p = &data;這種方式只能看自己的,不能修改別人的,也不能改變自己。

只能看自己:


const int * p p = 5 int * const p *p = 5 的不同

const int * p定義的是(const int)型的指標,指向的是int型的常量,指向的值不能改。
int * const p定義的是 const的指標,它的指向不能改。
你試試這個程式報錯的都是那幾行就知道了。
void main()
{
int a = 5,b = 6;
const int * p1 = &a;
int * const p2 = &a;
(*p1)++;//錯,p1指向的是常量,值不能變
(*p2)++;
p1 = &b;
p2 = &b;//錯,p2是常量指標,其指向不能變
}
 
int const *p 與int *const p 一樣

不一樣。
前者表明指向的對象是const型,不可以修改,但是指標p的指向可以修改;
後者表明指標變數p是const型,它的指向不可修改,但是指向的對象可以修改。
 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.