Помимо опечатки cinst
и пропущенной точки с запятой и допущения (не сообщая нам об этом) s
и struct s
относятся к одному и тому же типу
, ваша проблема в том, что типы str1
ичлен структуры s
не совместим
str1
имеет тип const char*[][2]
- член структуры имеет тип
const char***
Принудительное принятие компилятором str1
типа const char ***
решает вашу непосредственную проблему, т. Е. Программа компилируется и «работает», но вам действительно нужно понимать, что массивы не являются указателями и указатели не являются массивами .См. Раздел 6 сайта c-faq .
struct s
{
const char*** s;
};
const char* str1[][2] = {"1","2",
"3","4",
"5","6"};
struct s s1 = {(const char ***)str1};
const char* str2[][2] = {"1","2",
"3","4"};
struct s s2 = {(const char ***)str2};