Tôi đang cố gắng tạo một mảng cấu trúc trong đó mỗi cấu trúc đại diện cho một thiên thể.
Tôi không có nhiều kinh nghiệm về cấu trúc, đó là lý do tại sao tôi quyết định thử sử dụng chúng thay vì toàn bộ mảng. Tuy nhiên, tôi vẫn tiếp tục gặp phải vô số lỗi khác nhau. Tôi đã cố gắng triển khai các kỹ thuật mà tôi đã thấy trên các luồng khác nhau và trên StackOverflow (chẳng hạn như Mảng cấu trúc trong C và C - khởi tạo mảng cấu trúc ), tuy nhiên không phải tất cả chúng đều áp dụng được.
Thông tin thêm cho những người đã đọc đến đây: Tôi không cần bất kỳ thứ gì trong số này để trở nên năng động, tôi biết / xác định trước kích thước của mọi thứ. Tôi cũng cần đây là một mảng toàn cục vì tôi đang truy cập nó trong một số phương thức khác nhau có các đối số được xác định (tức là các phương thức GLUT).
Đây là cách tôi xác định cấu trúc trong tiêu đề của mình:
struct body
{
double p[3];//position
double v[3];//velocity
double a[3];//acceleration
double radius;
double mass;
};
Tôi có một danh sách các biến toàn cục khác mà tôi đang xác định trước khi xác định phần bên trong của cấu trúc và một trong số đó là mảng của cấu trúc này (về cơ bản, nếu tôi quá không rõ ràng trong bài nói của mình, thì dòng dưới đây ở trên những thứ ở trên):
struct body bodies[n];
Mong bạn biết đấy, n
là thứ mà tôi đã xác định một cách hợp pháp (tức là #define n 1
).
Tôi sử dụng mảng này trong một số phương pháp khác nhau, nhưng phương pháp dễ nhất và ít tốn dung lượng nhất là một dạng đơn giản của chính của tôi. Ở đây tôi khởi tạo tất cả các biến trong mỗi cấu trúc, chỉ để đặt các biến cho một số biến trước khi tôi sửa đổi chúng theo một cách nào đó:
int a, b;
for(a = 0; a < n; a++)
{
for(b = 0; b < 3; b++)
{
bodies[a].p[b] = 0;
bodies[a].v[b] = 0;
bodies[a].a[b] = 0;
}
bodies[a].mass = 0;
bodies[a].radius = 1.0;
}
Lỗi hiện tại mà tôi đang gặp phải là nbody.c:32:13: error: array type has incomplete element type
dòng 32 là nơi tôi đang tạo mảng cấu trúc.
Một lời giải thích cuối cùng, theo tiêu đề, tôi có nghĩa là khoảng trống ở trên int main(void)
nhưng trong cùng một *.c
tệp.
struct body bodies[n];
trước khistruct body {}
khai báo?