c - 将动态数组发送到函数 C++

标签 c memory dynamic

我有一个数组,现在是静态的。这是我用它做的操作。 首先我创建一个二维数组。然后我使用循环填充它。然后我将它发送到函数,其中也有使用的循环。 在这里我想发布一些示例代码,这与我的相似。

bool picture[20][20]; //here's my array right now. Pretty ugly. Just for testing.
for (int y=0;y<Height;y++)
{
    for (int x=0;x<Width;x++)
    {
        if (treshold<middle)
        {
            picture[x][y]=1;
        }
        else
        {
            picture[x][y]=0;
        }
     }
}
//Here's an example of filling an array

leftk = left(picture,widthk, heightk); //That's how I use a function

int left(int picture[200][200],int row,int col)
{
    for (int x = 0;  x <=row-1; x++)
    {
        for (int y = 0; y <=col-1 ;y++)
        {
            if (picture1[x][y]==1)
            {
                return x;
            }
        }
    }
}
//And that's the function itself

所以在这里我需要将数组切换为动态数组。这就是我声明动态数组的方式

bool** picture=new bool*[size];
    for(int i = 0; i < size; ++i)
        picture[i] = new bool[size];

//size is just a variable. 

至于静态声明的循环,一切都很简单。将此数组作为参数发送给函数。

我已经设法创建了一个动态数组,很简单。然后我用数字填充它。这里也没有问题。但我不明白,如何发送一个数组来运行以及如何在那里使用它。 你能给我一个在函数中修改二维数组的例子吗? 抱歉这样的新手问题。希望有人会帮忙。

顺便说一下,我认为类包装在这里会有点困惑。

最佳答案

一个函数,例如:

Process2DArray(int **pArray, int rowCount, int colCount)

假设它是一个正在操作的二维数组,应该足以满足需求。另外,考虑使用 std::vector<std::vector<int>>而不是手动分配的多维数组。这种方法将有助于防止泄漏。第二种方法还可以让您拥有锯齿状的数组。

关于c - 将动态数组发送到函数 C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9482795/

相关文章:

c - 数字冒泡排序动态创建的结构数组

计算系统总物理内存使用量

javascript - 动态 html 页面导航

c - strcasecmp算法有缺陷吗?

c - 如何将分配的内存分解为多个区域并分配给进程?

java - 在 Java 中计算可用内存的最佳方法是什么?

objective-c - 分配已分配的内存

c# - 在通过接口(interface)公开的方法上使用动态返回类型在架构上是错误的吗?

C# Newtonsoft.Json.Linq.JValue 总是返回 Int64

c - 是否需要创建指向结构的指针数组?