Страница 1 из 1

Работа со struct

Добавлено: Пт окт 02, 2009 15:33:45
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", как я предполагаю, что указатели массивов занимают одно и тоже пространство памяти? Как их разделить?

Добавлено: Сб окт 03, 2009 11:54:54
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[]; 

Как сделать так,чтобы массив был безразмерным?

Структуры это красиво

Добавлено: Пн окт 05, 2009 19:46:57
FUZZY_
А сколько байт при трансляции Это выливается?