根据这个网站,我应该能够使用以下代码:
double stuff[3][3];
double **p_stuff;
p_stuff = stuff;
Run Code Online (Sandbox Code Playgroud)
但我得到的投诉是转让不允许转让.
难道我做错了什么?
我有一个extern"C"类型的函数,我想通过这个双重的东西[3] [3]来.所以我想我需要把它作为指针,对吧?
Cub*_*bbi 13
关于编辑:将它传递double stuff[3][3]给C函数,你可以
1)传递指向整个2D数组的指针:
void dostuff(double (*a)[3][3])
{
// access them as (*a)[0][0] .. (*a)[2][2]
}
int main()
{
double stuff[3][3];
double (*p_stuff)[3][3] = &stuff;
dostuff(p_stuff);
}
Run Code Online (Sandbox Code Playgroud)
2)传递指向第一个1D数组(第一行)和行数的指针
void dostuff(double a[][3], int rows)
{
// access them as a[0][0] .. a[2][2]
}
int main()
{
double stuff[3][3];
double (*p_stuff)[3] = stuff;
dostuff(p_stuff, 3);
}
Run Code Online (Sandbox Code Playgroud)
3)将指针传递给第一行中的第一个值以及列和行的数量
void dostuff(double a[], int rows, int cols)
{
// access them as a[0] .. a[8];
}
int main()
{
double stuff[3][3];
double *p_stuff = stuff[0];
dostuff(p_stuff, 3, 3);
}
Run Code Online (Sandbox Code Playgroud)
(这最后一个选项不是严格符合标准的,因为它将指针推进到1D数组的元素(第一行)超过该数组的末尾)
如果那不是C函数,还有更多选项!