2017-02-19 10 views
0

Aは、 "int const * const data"を引数の1つとして取り込む関数を持っており、その意味がわかりません。私はこの関数が配列をとることを期待していたので、配列であると感じましたが、どういう考え方がありません。コンマの不足は私を捨てている。これは1つの議論です。C言語のフレーズ(int const * const b)は何を意味しますか?

EDIT:わかりました。私はconstがキーワードであることを認識しませんでした。とにかく、これは配列を指していますか?私は配列を期待しているからです。

+2

'const'は' a'のようなものとは非常に異なる具体的な意味を持っています。 – user2357112

+3

また、[ここでは、Cの宣言 - >英語の翻訳者](http://cdecl.org/)があります。 – user2357112

+0

@ user2357112ああ、それはたくさんの意味がある。私はタイトルを変更しました。 – RothX

答えて

2

constは、左側の引数(左側に何も残っていない場合は右側)に適用され、不変性(const-ness)を示すキーワードです。

  • int const* - 不変のint

への不変ポインタ - 不変(定数)intへのポインタで

  • int const*const(あなたはint型を変異させるために、このポインタを使用することはできません)

  • +0

    ありがとうございますが、配列が含まれている可能性はありますか?私はこの関数が配列をとることを期待しています。 – RothX

    +1

    Cには純正の配列パラメータはありません。パラメータで渡された配列は、配列の最初の要素へのポインタに変換されます。 'int const * const'は' int'配列を表すかもしれません。 – PSkocik

    +0

    私は参照してください。では、配列の最初の要素以外の要素にはどうすればアクセスできますか? – RothX

    2

    つの手段:

    1. ポインタが一定です。
    2. (ポインターが指している)データは一定です。
    関連する問題