http://www.neilstuff.com/guide_to_cpp/notes/Multi%20 Dimension%20 Arrays%20and%20 Pointer%20 Pointers.htm http://www.neilstuff.com/guide_to_cpp/notes/Multi%20Dimension%20Arrays%20and%20Pointer%20Pointers.htm
根据这个网站,我应该能够使用以下代码:
double stuff[3][3];
double **p_stuff;
p_stuff = stuff;
但我收到投诉称分配不允许转换。
难道我做错了什么?
我有一个外部“C”类型函数,我想将这个双重内容[3][3]传递给它。所以我想我需要让它成为一个指针,对吗?
关于编辑:通过此double stuff[3][3]
对于 C 函数,你可以
1) 传递一个指向整个二维数组的指针:
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);
}
2)传递指向第一个一维数组(第一行)的指针和行数
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);
}
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);
}
(最后一个选项并不严格符合标准,因为它将指向一维数组(第一行)元素的指针前进到该数组末尾之后)
如果那不是 C 函数,那么还有更多选择!
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)