配列のポインタを返す関数
C言語でtypedefを使わずに、配列のポインタを返す関数の宣言の方法がようやくわかった。
今まで、誰に聞いても答えを得られなかったものだ。
typedefを使った方がわかりやすくて良いのかもしれないが、
長年の疑問が解決したのでスッキリした。
float m[4][4] = { 1.0f, 2.0f, 3.0f, 4.0f, 5.0f, 6.0f }; float (*getmp())[4][4] { return &m; } float (*getm())[4] { return m; } int main(int argc, char* argv[]) { float (*a)[4][4]; a = getmp(); printf("(*a)[1][0] = %g\n", (*a)[1][0]); // (*a)[1][0] = 5 float (*b)[4]; b = getm(); printf("b[1][1] = %g\n", b[1][1]); // b[1][1] = 6 return 0; }