Рассмотрим следующий код в C:Невозможно определить размер массива указателей
int size = sizeof(a)/sizeof(a[0])
a
имеет тип char **
и его цель моего кода в виде массива. Гарантируется, что a
имеет несколько элементов. Так или иначе, size
всегда получает значение 1.
Мое первоначальное предположение состоит в том, что a
в sizeof(a)
обрабатывается как первый указатель вместо массива. Как это исправить?
'a' не является массивом. – immibis
'a' - указатель. Его размер - это размер указателя 'char **'. Как комментирует [@immibis] (http://stackoverflow.com/questions/40902677/unable-to-determine-the-size-of-an-array-of-pointers#comment69018980_40902677), это не массив. – chux