c++ const 用法總結

最近第二次學習c++ , 卻老是忘記const的一些用法, 因此記錄一下筆記html

忒困!c++

A: const指針位於 * 的左邊

A : const 修飾指針指向的內容, 則內容爲不可變量但指針可變;
面試

  稱其爲左定向, const 位於 * 的左邊函數

    int i = 10;
    int j = 20;
    const int *p = &i;
    printf("%d\n", *p);
    
    p = &j; // it's ok
    
    *p = 30; // it's error
    
    i = 39; // it's ok
    printf("%d\n", *p);

 

B: const指針位於 * 的右邊

B: const 修飾指針, 則指針爲不可變量; 能夠改變值, 但不能改變地址
  稱其爲右定向, const 位於 * 的右邊學習

    int a = 8;
    int * const p = &a;
    
    *p = 9;

    int b = 7; // it's error
    p = &b; // it's error
    printf("%d\n", *p);
    printf("%d\n", a); // a也變成9 了

 

C: const指針位於 * 的兩邊

C: cosnt修飾指針和指針指向的內容, 則指針和指針指向的內容都爲不可變量;
  左定值, 右定向, const修飾不變量優化

 

    int a = 8;
    const int * const p = &a;
    
    printf("%d\n", *p);

 

 

D:(int*)a和int*a的區別

不同。(int*)a將指針變量a強制轉換爲整型指針,說明a通常不是一個整型指針,也能夠是個整型指針。int*a,定義一個整型指針變量a






E: 阿里面試題

阿里C++筆試題:const int a = 10;int * p = (int *)(&a);*p=20; 爲何結果是a=10,*p=20?spa

編譯器優化的結果,編譯器在處理 const int a = 10; 
這句時 沒有爲a分配內存賦值,而是在加入了符號表,後續引用a時有些相似#define a 10這樣處理了
int * p = (int *)(&a);這句則 配*p被強制賦值,因此指針有效指向了某個地址,因此出現了上述結果

 

 F: const在成員函數後邊

 因爲電腦崩潰了, 因此那個網頁的內容找不到了, 沒記載, 之後補上指針

但整體想表達的意思呢, 就是, 成員函數後邊跟上const之後, 裏面不能有修改的內容code

  

參考連接: https://www.cnblogs.com/Forever-Kenlen-Ja/p/3776991.htmlhtm

相關文章
相關標籤/搜索