Как узнать размерность указателя на массив - C (СИ)
Формулировка задачи:
Такой вопрос, создаю динамический массив, но т.к. это указатель, то при запросе размерности показывает размер области памяти, занимаемой указателем (4 байта)
так вот вопрос, могу ли я всё таки вытянуть реальный размер массива, который создаю динамически.
пример кода:
char **s2 = new char *[10]; for (int i=0;i<10;i++) { s2[i]=new char [20]; } cout<<sizeof(s2)<<"\n";
Решение задачи: «Как узнать размерность указателя на массив»
textual
Листинг программы
#include <iostream> template< typename T > inline int arrlen(T *arr) { return static_cast<int>(_msize(arr)/sizeof(T)); } int main() { char **s2 = new char *[10]; for (int i = 0; i < 10; ++i) s2[i] = new char [20]; std::cout <<arrlen(s2) * arrlen(s2[0]) << "\n"; return 0; }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д