const int array[] = {1,2};
const int array[2] = {1,2};
コンパイルも動作も問題ありません。これらに違いはありますか?
(私はCodevisionを使用していますが、それは実際には問題ではありません)
いいえ、違いはありません。
唯一の例外は、2番目のケースchar
で、文字列リテラルを使用して配列を初期化し、配列のサイズが'\0'
-terminatorを反映していない場合、後者は切り落とされます。
char s[] = "alk" // makes s 4 chars wide
char s[3] = "alk" // makes s 3 chars wide
他のすべてのタイプまたは種類の初期化の場合、コンパイラーは初期化子が大きすぎることを警告する必要があります。
イニシャライザーが配列よりも「小さい」場合、残りの要素は、グローバルスコープで定義されているかのように、つまり、であるかのように初期化されstatic
ます。
これはすべて、この文脈で何かがそうであるかどうかとは完全に無関係const
です。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加