Tôi đang cố gắng tạo ra một loạt các cấu trúc mà mỗi cấu trúc đại diện cho một thiên thể cho vấn đề mà tôi đang làm việc trong lớp học của mình. Tôi không có nhiều kinh nghiệm với các cấu trúc, đó là lý do tại sao tôi quyết định sử dụng chúng thay vì một loạt các mảng, tuy nhiên, tôi tiếp tục chạy vào nhiều lỗi khác nhau, mặc dù tôi đã cố gắng thực hiện các kỹ thuật mà tôi đã thấy trên các chủ đề khác nhau và trên stackoverflow (chẳng hạn như tại Array of structs in C và C - initialize array of structs), tuy nhiên không phải tất cả chúng đều được áp dụng, vì vậy tôi đã không thể sao chép hoàn toàn cách để làm điều đó. Chỉ cần thông báo trước khi tôi chỉ cho bạn những gì tôi đang cố gắng làm, tôi sẽ không thể trả lời bình luận/câu hỏi/câu trả lời trong vài giờ vì tôi cần phải đi ngủ vì tôi đã tỉnh táo quá lâu, Tôi thực sự xin lỗi về điều này, nhưng tôi thực sự mệt mỏi sau khi đã có một ngày bận rộn và đã làm việc về vấn đề này trong vài giờ.Làm thế nào để bạn tạo một mảng cấu trúc trong C?
Thông tin thêm cho những người đã đọc bài viết này: Tôi không cần bất kỳ thứ gì trong số này là động, tôi biết/xác định kích thước của mọi thứ trước. Tôi cũng cần đây là mảng toàn cầu (gaspBIẾN GLOBAL) khi tôi truy cập vào một số phương pháp khác nhau đã xác định đối số (nghĩa là phương pháp GLUT).
Đây là cách tôi đang xác định các cấu trúc trong phần đầu của tôi:
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ầu khác mà tôi đang xác định trước khi tôi xác định bên trong các cấu trúc, và là một trong những là mảng struct này (về cơ bản, nếu tôi quá rõ ràng trong speak đứng trong fog của tôi, dòng dưới đây là trên các công cụ ở trên):
struct body bodies[n];
Chỉ cần để bạn biết, n
là một cái gì đó mà tôi đã được xác định hợp pháp (ví dụ: #define n 1
).
Tôi sử dụng mảng này theo nhiều phương pháp khác nhau, nhưng cách đơn giản nhất và ít tốn kém nhất là một dạng đơn giản của chính nơi tôi khởi tạo tất cả các biến trong mỗi cấu trúc. thay đổi chúng 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;
}
các lỗi hiện tại mà tôi đang phải đối mặt là nbody.c:32:13: error: array type has incomplete element type
nơi dòng 32 là nơi tôi đang làm cho các mảng của cấu trúc.
Cảm ơn bạn vì bất kỳ và tất cả sự trợ giúp mà bạn từ bỏ để cung cấp, tôi hứa rằng tôi sẽ liên hệ lại với bạn vào thời gian mới nhất, 12 giờ kể từ bây giờ.
Một giải thích cuối cùng, theo tiêu đề tôi có nghĩa là không gian phía trên int main(void)
nhưng trong cùng một tệp * .c.
Vâng, nó hoạt động tốt cho tôi. Bạn không khai báo 'struct body bodies [n];' trước khi 'struct body {}' khai báo? – Jack