1. ホーム
  2. c

[解決済み】定数ポインタと定数へのポインタの比較【重複

2022-04-07 19:52:31

質問

<余談
この質問には、すでにここで回答があります :
クローズド 8年前 .

との違いを知りたい

const int* ptr;

int * const ptr; 

とその仕組みについて説明します。

これを理解し、記憶し続けるのはかなり難しいです。 助けてください。

どのように解決するのですか?

const int* ptr; 

を宣言しています。 ptr へのポインタです。 const int という型があります。を変更することができます。 ptr が指すオブジェクトは ptr は変更してはならない。

const int a = 10;
const int* ptr = &a;  
*ptr = 5; // wrong
ptr++;    // right  

一方

int * const ptr;  

を宣言しています。 ptr a const へのポインタ int の型があります。を変更することはできません。 ptr が指し示すオブジェクトは ptr は変更することができます。

int a = 10;
int *const ptr = &a;  
*ptr = 5; // right
ptr++;    // wrong

一般的に、私はこのような宣言が読みやすく、理解しやすいと思います(右から左へ読む)。

int const  *ptr; // ptr is a pointer to constant int 
int *const ptr;  // ptr is a constant pointer to int