Как рассчитать размер массива из переменной указателя?
======================================================

у меня есть указатель массива (массив, который находится в памяти). Могу ли я рассчитать размер массива из его указателя? на самом деле я не знаю, где находится массив в памяти. Я только получаю адрес указателя (предположим, 9001), используя этот адрес, я должен рассчитать размер массива.

Благодарю.

 вы не можете рассчитать размер массива. Объекты в C не несут информацию о типе, поэтому вы должны заранее определить размер массива. Что-то вроде этого:



рядом» с массивом с этими данными.

если у вас есть сам массив, вы можете использовать sizeof, чтобы получить его размер на этапе компиляции.

Вы должны сделать следующее и использовать переменную в своей программе (или передать ее функции, когда вы передаете массив функции)



 а не размер любого массивамай указывать на.

Если вы в конечном итоге указатель на массив (либо явно что-то вроде`char *pch = "hello";` или неявно с распадом массива, таким как передача массива в функцию), вам нужно будет хранить информацию о размере отдельно, например:

Следующий код иллюстрирует это:

Вывод в моей системе:

потому что 24-байтовый массив преобразуется в 4-байтовый указатель в вызове функции.