Инициализация структуры
Можно ли инициализировать объектную таблицу структуры в c до main? У меня есть эта структура:
typedef struct customer{
int x, y;// coordinates
int quantity;
} customer;
customer *table1;
int main(){
table1 = (customer *)malloc(n * sizeof(customer));
table1[0].quantity = 0; table1[0].x = 0; table1[0].y = 0; //afetiria
table1[1].quantity = 1000; table1[1].x = 0; table1[1].y = 12; // 1st
table1[2].quantity = 1500; table1[2].x = 6; table1[2].y = 5; // 2nd
table1[3].quantity = 800; table1[3].x = 7; table1[3].y = 15; // 3rd
distance(1,2) //calculate the distance bet 1st and 2d object
}
Поскольку я хочу сделать функцию расстояния, я заметил, что она не работает, если я инициализирую структуру внутри main
, Любая идея о том, как я могу инициализировать глобально table1
?
2 ответа
Решение
Вот пример глобальной инициализации для вашего массива:
customer table1[] = { { 0, 0, 0 },
{ 0, 12, 1000 },
{ 6, 5, 1500 },
{ 7, 15, 800 } };
Однако то, что вы показали в своем коде, должно быть в значительной степени эквивалентно.
Вы можете переместить malloc
Звоните вне основного, но это не должно иметь никакого значения. Пока table1
объявляется вне main, что и есть в вашем примере, оно должно быть видно всему блоку перевода.