c - 了解如何从函数内部更新原始二维数组

标签 c arrays function pointers variable-assignment

我了解如何将 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]){
. . .
}

注意:在此函数中,RnewGnewBnew 应更新 - 每个都是二维数组。我希望在不返回任何内容的情况下完成此操作。

调用函数

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/

相关文章:

python - 如何在多处理函数中传递参数以及如何使用多处理列表?

scala - 理解scala中的函数

c - struct pthread_rwlock_t 成员说明

c - C中的字符串连接

ruby - 如何确保一个方法返回一个数组,即使在 Ruby 中只有一个元素

c - Arrays如何在 "for"循环中工作(C语言)

c - 错误 : invalid type argument of ‘unary *’ (have ‘int’ )

CPU TSC fetch 操作,尤其是在多核多处理器环境中

php - 拆分数组以创建关联数组

JavaScript 从 10 开始递减,然后在 0 时执行某些操作