2011-10-24 25 views

Trả lời

14

Bạn không thể gán mảng trong C. Bạn có thể sao chép chúng với memcpy() hàm, khai báo trong <string.h>:

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

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

Được rồi thx, thats totaly những gì tôi tìm kiếm. – Starfighter911

+1

@ Jonathan Leffler: '& mảng' là một lựa chọn có chủ ý - khi sao chép một đối tượng duy nhất (ở đây, một mảng đơn), tôi nghĩ rằng biểu mẫu 'memcpy (& dest, & src, sizeof src)' nên được ưa thích (hoặc với 'sizeof dest' - họ nên giống nhau). Điều này là cho sự nhất quán - cùng một dòng 'memcpy()' sẽ hoạt động nếu kiểu 'a' và' b' là một kiểu không phải mảng. Bạn có thể không đồng ý, nhưng hy vọng bạn có thể thấy rằng chắc chắn có "sự phán xét" đằng sau sự lựa chọn. – caf

+0

không phải là '& a' một con trỏ trỏ tới một mảng? – weberc2

14

Bằng cách đó không làm việc, khi bạn đã tìm thấy . Bạn không thể chỉ định mảng trong C.

Tuy nhiên, đường dẫn có thể được gán. Vì vậy, bạn có thể làm điều này:

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

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

a = b; 
+0

Cảm ơn này là thẳng, là có bất kỳ chức năng làm công việc này, vì vậy tôi không phải viết lại nhiều mã. – Starfighter911

+1

Làm thế nào để 'a = b' a" nhiều mã "? –

+0

OK, tôi đã thử điều này: ´T a []; T b [] = {{1, 2, 3}}; a = b; ´, nó vẫn không hoạt động. Đầu ra: "Biểu thức không có giá trị". – Starfighter911

Các vấn đề liên quan