#include<stdio.h>
#define SZ 3 // this is just for convenience
// a pointer to an anonymous structure containing our array
typedef struct {
int x[SZ];
} *pthrowaway;
int main(void)
{
int A[SZ]={1,2,3};
int B[4][SZ]={0};
int row_select=2;
pthrowaway a = (pthrowaway)&A;
pthrowaway b = (pthrowaway)&B[row_select];
*b = *a; // magic
return 0;
}
2条答案
按热度按时间dgtucam11#
memcpy
可能是一个不错的选择,尽管它很可能在内部使用循环。yfwxisqw2#
不要这样做:使用
memcpy
有一种方法可以用一条语句来完成赋值,只要您愿意做一些初步的设置来使代码变得难以辨认。你可以利用结构可以(1)在一个步骤中相互赋值,(2)包含固定大小的数组。编译器可能会在后台运行
memcpy
,但这是一个有趣的荒谬练习:变量
a
和b
是不必要的。实际上,你可以在一个语句中赋值数组:下面是一个IDEOne链接,显示了C99版本:https://ideone.com/IQ6ttg下面是一个普通的C:https://ideone.com/pH1hS2