使用C中的指针交换结构中的2D数组行

使用C中的指针交换结构中的2D数组行,c,arrays,memory,struct,C,Arrays,Memory,Struct,我试图创建一个函数,使用指向该结构的指针从结构内部的二维双数组交换两行 这是到目前为止我的函数代码 void swap_rows(struct Double_Array* ptr , int r1 , int r2){ double temp = ptr->array[r1]; ptr->array[r1] = ptr->array[r2]; ptr->array[r2] = temp; } 以下是我遇到的错误: cannot convert

我试图创建一个函数,使用指向该结构的指针从结构内部的二维双数组交换两行

这是到目前为止我的函数代码

void swap_rows(struct Double_Array* ptr , int r1 , int r2){

   double temp = ptr->array[r1];

   ptr->array[r1] = ptr->array[r2];

   ptr->array[r2] = temp;

}
以下是我遇到的错误:

cannot convert 'double*' to 'double' in initialization  
invalid array assignment    
incompatible types in assignment of 'double' to 'double [9]'

数组是在内存中分配的结构的一部分。但是我在编译时会出错。

首先,您必须使用二维数组的两个索引(如
array[0][r1]
)来访问二维数组,然后在循环中逐个交换
r1
r2
,如中所示。谢谢,我已将代码更改为使用循环,并且正在获得所需的输出。尽管如此,我相信应该有一种不使用循环的方法来实现这一点。我应该在我原来的帖子中澄清,但这正是我感兴趣的。投票以重复的方式结束,而不是引用另一个问题。你试图做数组赋值,这不是C的一个特性。你不能这样做。使用
memcpy
或自己循环。