传递指针重新presenting一个二维数组在C函数++ [英] Passing a pointer representing a 2D array to a function in C++

查看:145
本文介绍了传递指针重新presenting一个二维数组在C函数++的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

<一个href=\"http://www.neilstuff.com/guide_to_cpp/notes/Multi%20Dimension%20Arrays%20and%20Pointer%20Pointers.htm\" rel=\"nofollow\">http://www.neilstuff.com/guide_to_cpp/notes/Multi%20Dimension%20Arrays%20and%20Pointer%20Pointers.htm

根据这个网站,我应该能够使用以下code:

According to this site, I should be able to use the following code:

double stuff[3][3];
double **p_stuff;
p_stuff = stuff;

但我得到一个投诉,转换不被分配不允许的。

But I get a complaint that the conversion is not allowed by assignment.

我是不是做错了什么?

我有,我想通过这双玩艺一个externC型函数[3] [3]。所以我觉得我需要一个指针,对吧?

I have an extern "C" type function that I want to pass this double stuff[3][3] to. So I think i need to make it a pointer, right?

推荐答案

关于编辑:通过这个双玩艺[3] [3] C函数,你可以

Regarding the edit: to pass this double stuff[3][3] to a C function, you could

1)将指针传递到整个二维数组:

1) pass a pointer to the whole 2D array:

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)一个指针传递给第一个一维数组(第一排)和行数

2) pass a pointer to the first 1D array (first row) and the number of rows

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)将指针传递到第一行中的第一值和列和行数

3) pass a pointer to the first value in the first row and the number of both columns and rows

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);
}

(即因为它前进的指针一维数组过去的数组的末尾一个元素(第一行)这最后一个选项是没有严格的标准兼容)

(that this last option is not strictly standards-compliant since it advances a pointer to an element of a 1D array (the first row) past the end of that array)

如果这不是一个C函数,有会是更多的选项!

If that wasn't a C function, there'd be a few more options!

这篇关于传递指针重新presenting一个二维数组在C函数++的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆