Я считаю, что указатели не имеют одинакового размера. Единственное требование состоит в том, что все указатели объектов могут быть сохранены в void *
, что при нажатии на void *
и обратно они будут одинаковыми и что все указатели функций, если они будут переведены на другой тип указателя функции и обратно, будут одинаковыми , (Указатели функции отливки до void *
не гарантированно работают. Извините, если я указал другое.)
На практике, я думаю, что единственный раз, когда вы найдете указатели разного размера, если вы заботитесь о указателях функции-члена C++, или вы работаете над более неясной архитектурой.
В C90 char arr[];
является допустимым способом предварительного объявления глобального массива заданной длины. Обратите внимание, что char arr[]
является неполным типом, поэтому вы должны объявить его, прежде чем сможете использовать sizeof
. Это недействительно, как в C99, для создания элементов гибкого массива.
Dup of [Есть ли платформы, где указатели на разные типы имеют разные размеры?] (Http://stackoverflow.com/questions/916051/are-there-are-any-platforms-where-pointers-to- различные типы-имеют-различный размер), [Может ли размер указателей варьироваться в зависимости от того, что указало?] (http://stackoverflow.com/questions/1473935/can-the-size-of-pointers-vary- в зависимости от того, на что указывает) – outis
вы должны разделить это на два вопроса, чтобы они могли быть хорошо отвечены отдельно. –
Дубликат [- все указатели данных одного размера на одной платформе?] (http: // stackoverflow. com/questions/1241205/are-all-data-point-of-the-same-size-in-one-platform) –