在上一篇,提到了关于数组的指针的概念,这篇文章将讲述一个数组的指针的应用。
在一维数组作为参数传递给函数时,有两种方式:(假设为int的数组)
(1)void func (int array[ ] );
(2)void func ( int *array ) ;
其实在第一种表达方式中 int array[ ] 也是被解释为int *array,二者本质没有什么不同。
关于多维数组,其实可以解释为“数组的数组”。
比如 int hoge[3][2] ;
可以解释为 int 的数组(元素个数2)的 数组(元素个数3)
因此我们可采用与一维数组类似的方式向函数传递参数。(只不过这儿不是“指向int 的指针”,而是指向“int数组(元素个数为2)的指针” int (*hoge)[2])
也就是说,接收这个参数的函数的原型为:
void func( int (*hoge)[2] );
当然:
void func( int hoge[3][2] ) ;
void func( int hoge[ ] [2] ) ;
这两种传递方式也是正确的。
(参考 征服C指针 p116 页)