gpt4 book ai didi

c++ - 将二维数组添加到一维数组

转载 作者:行者123 更新时间:2023-11-28 04:23:36 25 4
gpt4 key购买 nike

代码应该创建一个二维数组,用一些值填充它,然后将值放入一维数组并添加**我有一个名为 AddTab 的函数,它应该将二维数组添加到一维数组。

    #include "pch.h"
#include <iostream>
using namespace std;

int **createTab(int n, int m)
{
int **tab = nullptr;
try {
tab = new int *[n];
}
catch (bad_alloc)
{
cout << "error";
exit(0);
}

for (int i = 0; i < n; i++)
{
try {
tab[i] = new int[m] {};
}
catch (bad_alloc)
{
cout << "error";
exit(0);
}
}
return tab;
}

void FillTab(int m, int n, int **tab)
{
for (int i = 0; i < m; i++)
{
for (int j = 0; j < n; j++)
{
cin >> tab[i][j];
}
}
}

void AddTab(int **tab,int n,int m)
{
int *temp_tab=new int[m];
memset(temp_tab, 0, sizeof(temp_tab));
for (int i=0;i<m;i++)
{
for (int j=0;j<n;j++)
{
temp_tab[j] += tab[i][j];
cout << temp_tab[j] << "( " << j << ")" << endl;
}
}


}



int main()
{
int **X = nullptr;
X = createTab(3, 3);
FillTab(3, 3, X);
AddTab(X, 3, 3);
}

我用 1 填充了 3x3 2d 选项卡。

对于第一个循环,它应该是 {1,1,1} 但是却弹出了一些奇怪的东西。

1( 0)
-842150450( 1)
-842150450( 2)
2( 0)
-842150449( 1)
-842150449( 2)
3( 0)
-842150448( 1)
-842150448( 2)

我该怎么做才能正常工作?

最佳答案

sizeof(temp_tab)

对于

int *temp_tab

返回 4/8 字节,这取决于系统。因此,对于动态分配的数组,只有前 4/8 个字节设置为 0。如果 temp_tab[j] 未设置为 0,则执行 temp_tab[j] += tab[i][j]; 更新垃圾值,最后结果是也获得垃圾值(value)。

修复:

memset(temp_tab, 0, sizeof(int) * m);

关于c++ - 将二维数组添加到一维数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54948217/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com