Работа со struct

Вопросы настройки, программирования, прошивки микроконтроллеров и микросхем программируемой логики
Закрыто
Встал на лапы
Аватара пользователя
Сообщения: 123
Зарегистрирован: Сб ноя 18, 2006 17:14:15

Сообщение boobonick »

Я вот хотел спросить,а вопросы по си сюда писать можно и есть ли ветки форума по си? :?
И вот наткнулся на граблииин:
так работает

Код: Выделить всё

typedef struct key {

 char *text_menu[10];
 char *sub_menu[10];

}*TMenu[10]; 

void main(void)
{
struct key  TMenu   = {{"Menu1\0","Menu2\0"},{"PodMenu1\0","PodMenu2\0","PodMenu3\0"}};

 lcd_puts(TMenu.sub_menu[1]); 

}
но вот так не получается:

Код: Выделить всё

typedef struct key {

 char *text_menu[10];
 char *sub_menu[10];

}*TMenu[10]; 

void main(void)
{
struct key  TMenu[0]   = {{"Menu1\0"},{"PodMenu\0","PodMen\0","PodMenu3\0"}};

struct key  TMenu[1]   = {{"Menu2\0"},{"PodMenu\0","PodMen\0","PodMenu3\0"}};

 lcd_puts(TMenu[0].sub_menu[1]); 

}
Подскажите,пожалуйста,чего я неправильно делаю?

А почему, если объявляю безразмерный массив :

Код: Выделить всё

typedef struct key {

 char *text_menu[ ];
 char *sub_menu[ ];

}*TMenu[10]; 
а потом я вывожу

Код: Выделить всё

 lcd_puts(TMenu.sub_menu[0]);

То выводится "Menu2", как я предполагаю, что указатели массивов занимают одно и тоже пространство памяти? Как их разделить?
Реклама
Встал на лапы
Аватара пользователя
Сообщения: 123
Зарегистрирован: Сб ноя 18, 2006 17:14:15

Сообщение boobonick »

Кажется разобрался :)

Код: Выделить всё

static struct key {

 char *text_menu;   
 char  *sub_menu[];
 
}TMenu[5];

void main(void)
{
struct key  TMenu[]   = {
{"Menu1\0" ,{"PodMenu1\0","PodMenu2\0","PodMenu3\0"}},
{"Menu2\0" ,{"PodMenu1\0","PodMenu2\0","PodMenu3\0"}}
};
}
Но,только непонятно почему нельзя написать :

Код: Выделить всё

static struct key {

 char *text_menu;   
 char  *sub_menu[];
 
} *TMenu[]; 

Как сделать так,чтобы массив был безразмерным?
Реклама
Потрогал лапой паяльник
Сообщения: 390
Зарегистрирован: Чт сен 24, 2009 17:22:51
Откуда: UK

Сообщение FUZZY_ »

А сколько байт при трансляции Это выливается?
Закрыто

Вернуться в «Микроконтроллеры и ПЛИС»