助理采购师有用吗:请教C高手,关于指针数组,数组指针和多级指针

来源:百度文库 编辑:中科新闻网 时间:2024/05/04 13:37:07
我是一个C初学者,有些问题弄不清楚,特来此求助

请问指针数组,数组指针和多级指针之间有什么不同和联系吗?
它们的功能能互相实现吗?如果能,怎么实现?
如果我想用一个三维数组作函数的参数,在函数定义时应该怎么定义形参。
多维数组名作实参时除了数组指针还能用别的方法吗?

问题较多,期待高手的指教,不胜感激

指针数组是指数组的元素是指针,如int* p[2];
代表p[0], p[1]两个整形指针

数组指针,是指向一个数组的指针,如
int s[2], *p;
p = s;
表示p指向数组的首地址
也可以这么写
p = &s[0];

多级指针就是指向指针的指针
如:
int a, *p, **q, ***r;
p = &a;
q = &p;
r = &q;
这里p指向a, q指向p(二级指针), r指向q(三级指针)

至于互相实现,就要看你对指针的理解程序了
虽然数组与指针并不是完全相同,不过大部分情况下是可以互换的

如 int s[2];
这里的s可以看作是一个指向int的指针

形参的定义: int s[][X][Y]
这里X与Y必须给定,不然它不能自动转换相应的地址
你也可以定义为int *p
这时候访问这个三维数组就要你自己去算地址了
如 int s[2][3][4]的话
取s[1][2][3]
就是*(p + 1*3*4 + 2 * 4 + 2 )

指针实际就是地址。
二级指针就是地址的地址。
多级指针类推。
指针数组就是数组的元素是地址。
数组指针就是数组元素所存放的地址。