指针的指针问题

来源:百度知道 编辑:UC知道 时间:2024/06/16 23:59:51
void matrix(int **a,int **b,int **c)
{
int sum=a[i][0]*b[0][j];
}

这个a为数组头元素的地址,*a为数组头元素,而**a是什么意思??
谢谢

当数组是一维时 那么a[0]是头元素a是头元素地址即a[0]=*a
同样在二维数组中 当数组是二维时 a[0][0]是头元素,a[0]是头元素地址即a[0][0]=*a[0]=**a

这里的int **a可以理解为二维数组,是一个指针数组。

二维数组名并不是单纯的指针的指针即二级指针!例如:
void f(int **a)
{
return ;
}
int main()
{
int a[10][12]={0};
f(a);
return 0;
}
就会编译报错!
函数f声明为
void f(int (*a)[12])
{
return ;
}
就不会报错!
也就是说二维数组名的类型是
int (*a)[n];n为数组列数

*a为数组头元素,假设元素为p,则p是指针,**a就是*p.就是p(*a)所指的内容.