いろいろなサイトを調べてみましたが,わかりやすい説明や具体例が載ってなく,なんとなく自分で以下のようなプログラムを組んでみました.
#include <stdio.h>
void foo(int (*)[10]);
int main(void){
int a[10];
int i;
for(i=0;i<10;i++) a[i]=i;
foo(&a);
for(i=0;i<10;i++) printf("a[%d]=%2d\n",i,a[i]);
return 0;
}
void foo(int (*x)[10]){
(*x)[4]=40;
}
a[0]= 0
a[1]= 1
a[2]= 2
a[3]= 3
a[4]=40
a[5]= 5
a[6]= 6
a[7]= 7
a[8]= 8
a[9]= 9
プログラム自体は正しく動いたのですが,結局,配列へのポインタを使うメリットがわかりませんでした.
実際,下記のように関数の引数として渡すものを配列にして実行してみても上手くいきました.
どのようなときに配列へのポインタは効力を発揮するのか,できればそのサンプルプログラムなども教えていただけると幸いです.