Я знаю, что при использовании в качестве параметра функции
Использование char * a [] vs char a [] []char* a[]
эквивалентно
char a[][]
.
При использовании в качестве функционального параметра char* a[]
эквивалентно char** a
. Also known as Array to pointer conversion to some.
Однако при использовании в блоке сферы они не являются одинаковыми, и я запутался, когда я должен предпочесть один над другим, или если я должен пропустить char a[][]
, как я обычно склонны видеть char* a[]
в других народный код.
Один аргумент против char a[][]
, очевидно, что вы должны указать фиксированный размер для C-строк, которые он будет содержать, но влияет ли это на производительность каким-либо образом?
Должен ли я предпочитаю это:
char* a[] = {"hello", "world"};
Или это:
char a[][10] = {"hello", "world"};
Остерегайтесь любого предложения, которое начинается с «Я знаю это» ... –
@KerrekSB Что значит? – hgiesel
Ваше ведущее утверждение неверно. 'char a [] []' никогда не разрешается. Что эквивалентно, как типы параметров функции, это 'char * a []' и 'char ** a'. –