Инициализация структуры - PullRequest
1 голос
/ 07 марта 2012

Можно ли инициализировать объектную таблицу структуры в 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 ]

3 голосов
/ 07 марта 2012

Вот пример глобальной инициализации для вашего массива:

customer table1[] = { { 0, 0, 0 }, 
                      { 0, 12, 1000 },
                      { 6, 5, 1500 },
                      { 7, 15, 800 } };

Однако то, что вы показали в своем коде, должно быть в значительной степени эквивалентно.

0 голосов
/ 07 марта 2012

Вы можете переместить вызов malloc за пределы основного, но это не должно иметь значения.Пока table1 объявляется вне main, что в вашем примере, оно должно быть видимым для всей единицы перевода.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...