C言語の場合
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2021/12/13 01:36 UTC 版)
C言語は規格で多次元配列に関する言及があるが、実際にサポートされているのは「配列の配列」であって、真の多次元配列ではない。次のようなコードのことを考えてみればわかる。 void f(int (*p_arr3)[3]) { ……}int main(void) { int arr5_arr3[5][3]; f(arr5_arr3); return 0;} ここで arr5_arr3 は「『intの3要素の配列』の5要素の配列」である。そして、関数fに渡される際には、C言語の「配列は引数として渡される際は、その先頭要素を指すポインタに縮退する」というルールにより、その先頭の「intの3要素の配列」を指すポインタがp_arr3に渡される。 もし仮にC言語で真の多次元配列がサポートされているならば、それぞれ「intの5x3要素の配列」「『intの5x3要素』を指すポインタ」(あるいは、単にintを指すポインタに縮退するかもしれない)などがサポートされるはずだが、実際にはサポートされない。
※この「C言語の場合」の解説は、「配列」の解説の一部です。
「C言語の場合」を含む「配列」の記事については、「配列」の概要を参照ください。
- C言語の場合のページへのリンク