ホームページ >バックエンド開発 >C++ >C と C の「const int」と「int const」: 本当に同じですか?

C と C の「const int」と「int const」: 本当に同じですか?

DDD
DDDオリジナル
2024-10-27 02:06:30756ブラウズ

C および C の関数パラメーターとしての「const int」と「int const」

const を使用して関数パラメーターを宣言する場合、「const int」を区別することが重要です' と 'int const'。これらは同じように見えますが、修飾子の順序によって宣言の解釈が変わります。

'const int' は、定数 (変更不可) で int 型の変数を宣言します。ここで強調しているのは、変数に適用されるconst修飾子です。一方、

'int const'は、 int 型で定数の変数。この場合、const 修飾子は変数ではなく type を変更します。

では、これら 2 つの関数は同一ですか?

<code class="c">int testfunc1 (const int a) { return a; }
int testfunc2 (int const a) { return a; }</code>

はい、それらは同等です。 宣言を逆から読むと、これが明確になります。

'const int' の場合:

  • "a" は "定数" である整数です。

'int const' の場合:

  • "a" は "

どちらの場合も、「a」は整数でもあり定数でもあります。

ただし、複雑な宣言では、逆方向から読み取るトリックが非常に重要になります。

<code class="c">// "s" is a pointer to a char that is constant
const char *s;

// "t" is a constant pointer to a char
char *const t = &c;

// The char in "s" is constant, so you can't modify it
*s = 'A'; // Can't do

// The pointer in "s" is not constant, so you can modify it
s++; // Can do

// The char in "t" is not constant, so you can modify it
*t = 'A'; // Can do

// The pointer in "t" is constant, so you can't modify it
t++; // Can't do</code>

C では、 const データ メンバーはクラス宣言またはコンストラクターのいずれかで初期化できることを思い出してください。一方、C では、const データ メンバーは記号定数とみなされ、宣言内で初期化する必要があるため、#define に非常に近くなります。

以上がC と C の「const int」と「int const」: 本当に同じですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。