接受2D数组,将其乘以整数并以C ++返回新的2D数组的函数吗?

时间:2020-11-10 06:09:04

标签: c++ arrays

说我有一个带有整数元素的3x4数组,我想将此数组传递给一个函数,然后该函数接受所有元素并将它们乘以某个整数'b'然后返回此新数组,我将如何处理?这是我目前所拥有的

#include <iostream>
#include <math.h>

using namespace std;

// my function for multiplying arrays by some integer b
int* multarray(int (*a)[4], int b)
{
    for (int i = 0; i < 3; i++)
        {
            for (int j = 0; j < 4; j++)
            {
                *(*(a+i)+j) *= b;
            }
        }
    return *a;
}

int main()
{
    // creating an array to test, values go from 1-12
    int arr [3][4];
    int k = 1;

    for (int i = 0; i < 3; i++)
    {
        for (int j = 0; j < 4; j++)
        {
            arr[i][j] = k;
            k++;
        }
    }

    // trying to setup new 'array' as a product of the test array
    int *newarray;
    newarray = multarray(arr,3);

    // printing values (works with *(newarray+i) only)
    for (int i = 0; i < 3; i++)
    {
        for (int j=0; j<4; j++)
        {
            cout << *(*(newarray+i)+j);
        }
    }


return 0;
}

如果我在打印所有值时不包括j部分,但现在就可以了,这告诉我我有一个错误:一元'*'的无效类型参数(具有'int')

1 个答案:

答案 0 :(得分:2)

您的函数未返回新数组,而是在修改现有数组。因此(假设这对您来说不是问题),您只需将返回类型更改为void。

void multarray(int (*a)[4], int b)
{
    ...
}

然后

multarray(arr,3);
for (int i = 0; i < 3; i++)
{
    for (int j=0; j<4; j++)
    {
        cout << *(*(arr+i)+j);
    }
}

如果您确实确实想要一个返回新数组的函数,那么那将是一个完全不同的(而且要复杂得多)的问题。严格来讲,除了其他方面,不可能用C ++返回数组。

相关问题