Tôi có một vấn đề gán một mảng như:Tại sao tôi không thể gán mảng dưới dạng & a = & b?
int a[];
int b[] = {1,2,3};
&a = &b;
Tôi biết tôi có thể sử dụng con trỏ nhưng tôi muốn thử nó như vậy ...
Tôi có một vấn đề gán một mảng như:Tại sao tôi không thể gán mảng dưới dạng & a = & b?
int a[];
int b[] = {1,2,3};
&a = &b;
Tôi biết tôi có thể sử dụng con trỏ nhưng tôi muốn thử nó như vậy ...
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);
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;
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
Làm thế nào để 'a = b' a" nhiều mã "? –
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 rồi thx, thats totaly những gì tôi tìm kiếm. – Starfighter911
@ 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
không phải là '& a' một con trỏ trỏ tới một mảng? – weberc2