Я играю со структурами и нашел способ назначить экземпляры структурных идентификаторов типа int.Создание экземпляров структуры в перспективе?
struct test{
int x;
int y;
}
assign(struct test *instance, int id, int x2, int y2)
{
(instance+id)->x = x2;
(instance+id)->y = y2;
}
print(struct test *instance, int id)
{
printf("%d\n", (instance+id)->x);
}
main()
{
struct test *zero;
assign(zero, 1, 3, 3);
print(zero, 1);
}
При выполнении этого кода он делает то, что должен, но это дает мне уведомление о недостатке сегментации. Что я могу сделать по этому поводу?
примечание '(экземпляр + идентификатор) -> x' ==' экземпляр [ID] .x' –
три вещи ошибочны в main() 1) правильный синтаксис - это «int main()» 2) передача «1» приведет к установке второй записи в «ноль», I.E. пропуская первую запись. 3) в настоящее время «ноль» указывает на «ничего особенного» I.E. он должен указывать на некоторую выделенную память, например: struct test * zero = malloc (2 * sizof (struct test)); Затем проверьте возвращаемое значение из malloc(), чтобы убедиться, что операция прошла успешно. Затем сделайте вызов для назначения(). Примечание: обязательно позвоните бесплатно (ноль); перед выходом из программы, чтобы избежать утечки памяти. – user3629249