我了解如何将 2D 数组传递给 C 中的函数,但我想让该函数更新原始结构而不是它的副本。我该怎么办呢?为什么我使用的方法会创建结构的副本 - 我的印象是这是与使用指针等效的另一种语法?
感谢您的帮助。我在下面包含了代码片段:
声明变量
int R[rowsize][colsize], G[rowsize][colsize], B[rowsize][colsize];
int Rnew[rowsize][colsize], Gnew[rowsize][colsize], Bnew[rowsize][colsize];
初始化函数
void blur(int rowsize, int colsize, int R[][428], int G[][428], int B[][428], int Rnew[][428], int Gnew[][428], int Bnew[][428]){
. . .
}
注意:在此函数中,Rnew
、Gnew
和 Bnew
应更新 - 每个都是二维数组。我希望在不返回任何内容的情况下完成此操作。
调用函数
blur(rowsize, colsize, R, G, B, Rnew, Gnew, Bnew)
最佳答案
你可以试试这个方法..
# include <stdio.h>
#define rowsize 3
#define colsize 3
int main()
{
int R[rowsize][colsize]={1,2,3,4,5,6,7,8,9};
int Rnew[rowsize][colsize];
copy_from_R_to_Rnew(R,&Rnew);
int i,j;
for(i=0;i<rowsize;i++)
{
for(j=0;j<colsize;j++){
printf("\t %d",Rnew[i][j]);
}
printf("\n");
}
return(0);
}
void copy_from_R_to_Rnew(int *R,int *Rnew)
{
int i,j;
for(i=0;i<rowsize;i++)
{
for(j=0;j<colsize;j++){
*(Rnew+i*colsize+j) = *(R+i*colsize+j);
}
}
}
关于c - 了解如何从函数内部更新原始二维数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53767140/