const修飾指針的三種效果


當用const進行修飾時,根據const位置的不同有三種不同效果。 判斷的標准是:const修飾誰,誰的內容就是不可變的。

1 const int *p = &a;

  const修飾*p, *p不可變,p是指針,*p是指針p指向的內存單元里的內容,*p不可變也就是p指向的內存單元里的內容是不可變的。

PS: 這兒*p是不可變的,但是p是可變的,就是p指向的內存單元或者說變量是可以變的,但是p指向誰,誰的值就不可變。

     不可變指的是不能用*p改變a的值,但是a自己或者別的指針還是可以修改a的值

  int main(void)
  {
    int a = 10;
    const int *p = &a; //不可以用*p改變a的值

    int *q = &a;
    *q = 20;  //可以用*q改變a的值
    printf("a = %d \n", a);
    a = 30; //給a賦值也可以修改a的值
    printf("a = %d \n", a);
    system("pause");
    return 0;
  }

使用時機:定義形參時,如果不想改變參數的值,可以用const修飾

2 int* const p = &a;

  const修飾p,指針p是不可變的,也就是p指向的內存單元不可變。即p的指向不可變,p指向的內存單元的內容可以變。

3 const int* const p = &a;

  *p和p都被const修飾了,所以p指向的內存單元,和p指向內存單元中存放的內容都是不可變的。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM