инициализирующие структуры и вложенные структуры - PullRequest
0 голосов
/ 29 октября 2009

НКУ

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

Любой совет будет наиболее полезным,

#include <stdio.h>

typedef struct
{
  char name[20];
  int age;

} NAME_AGE_STRUCT;

typedef struct 
{
  int ID;
  NAME_AGE_STRUCT info[];

} DETAILS_STRUCT;


int main(void)
{
  DETAILS_STRUCT details;
  NAME_AGE_STRUCT extra_details [] = {
    { "john", 34 },
    { "peter", 44 },
  };

  printf("=== Start program\n");

  details.ID = 2;
  details.info = extra_details;

  return 0;
}

1 Ответ

5 голосов
/ 29 октября 2009

Вам необходимо указать длину массива в DETAILS_STRUCT; в противном случае нет памяти для назначения. Если вы хотите иметь произвольный массив, объявите его как указатель:

typedef struct 
{
  int ID;
  NAME_AGE_STRUCT *info;
} DETAILS_STRUCT;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...