2011-10-24 43 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

相關問題