gpt4 book ai didi

c - 通过指针传递矩阵时出现缺陷值

转载 作者:行者123 更新时间:2023-11-30 16:18:34 25 4
gpt4 key购买 nike

我正在使用一种算法,需要将二维矩阵复制到更大尺寸的二维矩阵中。当我在同一个主堆栈中工作时,它运行良好,但是当我将复制的矩阵的指针传递给另一个函数时,这些值被损坏。

产生问题的步骤:1- 将大小为 x 的二维方阵复制到另一个大小为 y 的方阵 (y>x)。2-将复制矩阵的指针传递给函数。3-打印函数内的矩阵。

结果将是损坏的值。

int main(void) {
int tab[3][3] = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}};
int tab2[5][5];
int size = 3;

// Coppying tab to tab2
for(int i = 0; i<size; i++)
{
for(int j = 0; j<size; j++)
{
tab2[i][j] = tab[i][j];
}
}


// printing tab2 using myPring Function
myPrint(tab2, size);
return 0;
}

void myPrint (int* tab, int size)
{
for(int i = 0; i<size; i++)
{
printf("|");
for(int j = 0; j<size; j++)
{
printf("tab[%d][%d] => %d |", i, j, *((tab+i*size) + j) );
}
printf("\n");
}
printf("____________________________________________\n");
}

最佳答案

*((tab+i*size) + j) 使用 size 计算指针,该指针为 3。然而,虽然 tab2 的每一行只存储了三个值,但它实际上每行有五个元素。

关于c - 通过指针传递矩阵时出现缺陷值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55859520/

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