2
  1. int と int へのポインターを定義します。

    int i = 22, *p = &i;

  2. 低レベルでトップレベルの const であるポインターを定義します。

    const int *const cp = p;

    (2) 大丈夫です - (i の) 値を変更する権限のない const ポイント

  3. ロー+トップレベルのconstであるポインターへのポインターを定義します。

    const int **const cp_2_p = &p;

    (3) 大丈夫じゃない、どうして?

    error C2440: 'initializing' : cannot convert from 'int **' to 'const int **const

intポインターが指すアドレスも、ポインターが指すアドレスも変更できないポインターへのポインターを定義できると期待しています。

4

1 に答える 1

7

通常、const左の項目に適用されます。の例外はconst T、歴史的な理由から存在し、 の従来の代替手段T constです。

cp定数への定数ポインタとして宣言されていますint

cp_2_pは、定数 int への定数ポインターへの定数ポインターとして宣言されています。

cp_2_pタイプに互換性を持たせるには、次のように宣言する必要があります。

const int *const *const cp_2_p
于 2013-04-14T07:26:59.913 に答える