[解決済み] C言語で配列のサイズを決定するにはどうすればよいですか?
2022-03-20 06:28:09
質問
C言語で配列のサイズを決定するにはどうすればよいですか?
つまり、配列が保持できる要素数?
どのように解決するのですか?
エグゼクティブサマリー
int a[17];
size_t n = sizeof(a)/sizeof(a[0]);
フル回答です。
配列のサイズをバイト単位で決定するためには
sizeof
演算子を使用します。
int a[17];
size_t n = sizeof(a);
私のコンピュータでは、intは4バイト長なので、nは68です。
配列の要素数を求めるには、以下のように割ればよい。 配列の総サイズを配列要素のサイズで割ったものです。 このように型を使ってやることもできます。
int a[17];
size_t n = sizeof(a) / sizeof(int);
と入力し、適切な答え (68 / 4 = 17) を得ますが、もし
a
を変更し忘れると、厄介なバグが発生します。
その
sizeof(int)
を追加しました。
つまり、好ましい除数は
sizeof(a[0])
または同等の
sizeof(*a)
の場合、配列の最初の要素のサイズを指定します。
int a[17];
size_t n = sizeof(a) / sizeof(a[0]);
もう一つの利点は、簡単にパラメータ化できるようになったことです。 という配列名をマクロで取得します。
#define NELEMS(x) (sizeof(x) / sizeof((x)[0]))
int a[17];
size_t n = NELEMS(a);
関連
-
警告:符号付き整数式と符号なし整数式の比較 [-Wsign-compare]
-
[解決済み] 配列から特定の項目を削除するにはどうすればよいですか?
-
[解決済み] 配列からArrayListを作成する
-
[解決済み] JavaScriptの配列で一意な値をすべて取得する(重複を排除する)。
-
[解決済み] JavaScriptで配列を空にするにはどうしたらいいですか?
-
[解決済み] プログラム終了前にmallocの後にfreeをしないと本当に何が起こるのか?
-
[解決済み] LD_PRELOADのトリックとは何ですか?
-
[解決済み】C/C++の"-->"演算子とは何ですか?
-
[解決済み】オブジェクトの配列を文字列のプロパティ値でソートする
-
[解決済み】配列に何かを追加する方法は?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
error: '.' トークンの前にunqualified-idを指定する必要があります。
-
g++が内部・外部コマンドソリューションとして認識されない、MinGWを初めて使うときの落とし穴
-
コンパイルエラー:可変長オブジェクトが初期化されていない可能性があります。
-
[解決済み] 初期化でポインタ対象の型から修飾語を捨てる
-
[解決済み] Windows用Cコンパイラ?[クローズド]
-
[解決済み] C言語の**はどういう意味ですか?
-
[解決済み] mallocの結果はキャストするのですか?
-
[解決済み] ++iとi++の違いは何ですか?
-
[解決済み] なぜ16進数には0xがつくのですか?
-
[解決済み] なぜalloca()の使用はグッドプラクティスとみなされないのでしょうか?