Получение размера массива в C
У меня есть пример следующим образом:
У меня есть структура:
typedef struct e{
int *(array[2]); <---in my case this array is a [2][69]
}Example;
и тогда это, если у меня есть такая функция, как:
int funct(Example *e);
Как я могу получить размер массива?
Я старался:
int size =(sizeof(e->array[0])/sizeof(int));
Но это не возвращает значение 69.
Любая помощь будет очень высоко ценится.
2 ответа
Вы не можете, потому что вы не можете передавать массивы в функции (или возвращать их в этом отношении). Когда вы передаете массив в качестве аргумента, он распадается на указатель на первый элемент. Вы должны будете также передать размер.
Думаю об этом; если бы вы могли на самом деле передать массив (не указатель! Они разные животные.), почему все эти стандартные библиотечные функции принимают указатель и размер?
Вы должны передать размер.. Вы не можете найти размер без этого..