Что напечатает эта программа? :)
#include <stdio.h>
#include <stdlib.h>
#ifndef USE_HEAP
#define USE_HEAP 0
#endif /* USE_HEAP */
#define DATA_LEN 4
#define LEDS_COUNT 4
struct leds {
char id;
#if USE_HEAP
char data[];
#else
char data[DATA_LEN];
#endif /* USE_HEAP */
};
int main(int argc, char **argv)
{
size_t i, j, k = 0;
#if USE_HEAP
struct leds *p;
p = malloc((sizeof(*p) + sizeof(*p->data) * DATA_LEN) * LEDS_COUNT);
if (!p) {
perror("Oops:");
return 1;
}
#else
struct leds p[LEDS_COUNT];
#endif /* USE_HEAP */
for (i = 0; i < LEDS_COUNT; ++i) {
for (j = 0; j < DATA_LEN; ++ j) {
p[i].data[j] = ++ k;
}
}
for (i = 0; i < LEDS_COUNT; ++ i) {
for (j = 0; j < DATA_LEN; ++ j) {
printf("\t%d", p[i].data[j]);
}
putchar('\n');
}
#if USE_HEAP
free(p);
#endif /* USE_HEAP */
return 0;
}