C语言指针问题求解……
最近在学习指针,被那些指向来指向去的东西弄的好晕……
1、如果定义一个数组int a[n],并拿数组名作为一个函数的参数进行传递的话,形参的形式可以写成int *a
那么定义一个二维数组int a[n][m],还是拿数组名作为一个函数的参数进行传递,为什么形参的形式不能写成int **a呢?
2、定义一个指向数组的指针int (*p)[4];
如果想要初始化这个指针的话,应该是要把另一个包含四个元素的数组的地址赋给p
比如我写成下面这个样子
int a[4];
int (*p)[4];
下面是疑问:
a本来就是指向数组头元素的指针了,为什么初始化语句的形式不能写成p=a,而必须写成&a呢?
a是指向数组头元素的指针,那&a代表的是什么含义呢?指向数组头元素地址的指针?感觉这好像没什么实际含义似的啊……
3、如果我定义一个函数的形参形式是int **a,那么作为一个实参应该以一种什么类型来进行传递呢?除了同样定义一个双重指针进行传递以外
望各位大神能不吝赐教,谢谢!