Во-первых, не ясно, что вы хотите сделать.Невозможно "указать" на другую структуру, используя однобайтовое значение.Во-вторых, не имеет смысла помещать первый байт второй структуры в ch [0], не делая ничего другого.
То, как создается структура, я подозреваю, что она предназначена для структура переменной длины .(Другие ответы касались этого, но они используют дополнительное пространство для хранения указателя, а не всей строки.)
Выделив несколько дополнительных байтов, вы получите следующий макет в памяти:
+----
| Variable a
| Variable 2 (sic)
| ch[0]
+------ Extra memory below:
| ch[1]
| ...
| ch[N]
+------
Вы можете выделить это следующим образом:
p = malloc(sizeof(Element) + N);
Вы можете получить доступ к элементу, например p->ch[4]
, и получить доступ к ch
в виде строки, используя p->ch
.
Теперь этодо вас, чтобы заполнить массив ch
строкой (или чем угодно), которую вы хотите.