On Thursday 18 November 2004 16:59, Dmitry A. Fedorov wrote: > On Thu, 18 Nov 2004, Dmitry E. Oboukhov wrote: > > в чем смысл масива с нулевой длиной кроме как использование > > идентификатора как указателя? > > можете привести пример? > struct pkt > { > uint32_t flags; > uint32_t length; > char data[0]; // data[1] для старых компиляторов > }; > struct pkt* create_pkt( size_t data_length ) > { > struct pkt* pkt = > (struct pkt*) malloc( sizeof(struct pkt) + data_length ); > > if (pkt != NULL) > { > pkt->flags = PKT_NODELAY; > pkt->length = data_length; > memset( pkt->data, 0, data_length ); > pkt->data[4] = 'r'; > pkt->data[5] = 't'; > pkt->data[6] = 'f'; > pkt->data[7] = 'm'; > } > > returm pkt; > } >
Я чего-то не понимаю. Зачем всё-таки нужен char data[0], почему не использовать char *data?