いきなりですが問題です.まず,こちらのソースファイルをご覧ください.
#include <stdio.h> void print_array(int a[2][3]) /* int **a ではうまくいかない */ { int i, j; for (i = 0; i < 2; i++) { for (j = 0; j < 3; j++) { printf("(%d,%d): %d\n", i, j, a[i][j]); } } } int main(void) { int b[2][3] = { {1, 2, 3}, {4, 5, 6} }; print_array(b); return 0; }
このソースファイルをもとに,あなたが「配列」と「ポインタ」の違いを十分にわかっていることを示すような問題文を作ってください.そして,その問題に対して,答えを与えてください.
例えば
- 「int a[2][3]」のところを「int **a」に変えると実行結果はどうなるか.
という問題文は,作業すれば終わりなので,配列とポインタの違いがわかる問いとは言えません.一方
- なぜ「int **a」ではうまくいかないのか.
とした場合,明快な答えが書けますか?