2015-01-07 2 views
0

Программа должна рассчитать величину векторов и затем распечатать результаты. Я могу управлять всей этой работой, но у меня возникают проблемы с фактическим объявлением структуры.Объявление структуры, которая работает с массивом в C

Программа предложит пользователю указать количество векторов, которые они хотели бы сохранить.

так что я оставил мою структуру массив нераспределенные и я вернусь позже с таНос()/свободной()

, но вот то, что я пытаюсь сделать

struct vector *array 
{ 
    double x; 
    double y; 
    double z; 
} 

хугом является точки вектора, я предполагаю, что каждый элемент массива будет содержать x, y, z, но это не работает, когда я его компилирую, он дает мне ошибки «,» «asm», которые не были найдены раньше {, поэтому я положил a = как этот

struct vector *array= 
    { 
     double x; 
     double y; 
     double z; 
    } 

он затем дает мне выражение перед двойным не найден

Что я делаю неправильно?

Снова если не выяснено.

Я пытаюсь пользователь мог ввести число векторов, которые будут использоваться, которые затем это число будет использоваться в таНосе выделить память для массива структур, которые я предполагаю, каждый элемент массива будет содержать хуг

Новое в структурах, поэтому помощь будет высоко оценена.

ответ

2
struct vector 
{ 
    double x; 
    double y; 
    double z; 
}; 

struct vector *array; 

Теперь массив указатель на вектор структуры и вы можете создавать его экземпляры путем выделения требуемой памяти с использованием malloc() и присвоить значение для структуры полей для каждого экземпляра.

Как

array = malloc(sizeof(struct vector) *n); /* n = size inputted by user */ 
for(i=0;i<n;i++) 
{ 
    array[i].x = <someval>; 
    array[i].y = <someval>; 
    array[i].z = <someval>; 
} 
+0

Поправьте меня, если я ошибаюсь, теперь у нас есть указатель на структуру вектора. Таким образом, каждый элемент этого массива содержит x, y, z, и если мне нужно получить доступ к каждому из них, я бы просто сделал что-то вроде этого массива [1] .x или array [1] .y – Superman

+0

задал вопрос правильно по мере обновления ваш ха-ха, спасибо вам за краткий и своевременный ответ – Superman

+0

@Superman Это ответ на ваш вопрос? – Gopi