2011-10-24 42 views

回答

14

您不能分配数组在C您可以用memcpy()功能复制它们,在<string.h>声明:

int a[3]; 
int b[] = {1,2,3}; 

memcpy(&a, &b, sizeof a); 
+1

好的thx,这就是我搜索的东西。 – Starfighter911

+1

@Jonathan Leffler:'&array'是一个有意的选择 - 复制单个对象(这里是一个单一的数组)时,我认为应该首选'memcpy(&dest,&src,sizeof src)'形式(或'sizeof dest' - 他们应该是一样的)。这是为了保持一致性 - 如果'a'和'b'的类型是非数组类型,那么相同的'memcpy()'行将起作用。你可能不同意,但希望你能看到选择背后肯定存在“判断”。 – caf

+0

不是'&a'指向数组的指针吗? – weberc2

14

这样是不行的,因为你已经找到。您不能在C中分配数组。

但是,结构是可分配的。所以,你可以这样做:

typedef struct 
{ 
    int x[3]; 
} T; 

T a; 
T b = { { 1, 2, 3 } }; 

a = b; 
+0

由于这是直的,没有任何功能做这份工作,所以我不必重写很多代码。 – Starfighter911

+1

'a = b'是多少代码? –

+0

好吧,我试过这个:'T a []; T b [] = {{1,2,3}}; a = b;',它仍然不起作用。输出:“表达式不是左值”。 – Starfighter911

相关问题