Видимо вы путаете указатель с содержимым указателя.
Как аналогия с реальным миром, вы могли бы сказать, что, когда я указываю на птицу, вы хотите превратить мой указательный палец в птицу. Но нет никакой связи между типом «птица» и «палец».
Перенос этой аналогии в вашу программу: вы конвертируете объект, указывающий на ваш int
, в сам int
. Поскольку указатель C реализован как «номер ячейки памяти» и поскольку доступно лотов ячеек памяти, очевидно, что (int)p
приведет к очень большому числу.
Кастинг - это неприятная вещь. Это совпадение, что указатели довольно аналогичны целым числам. Если бы они были реализованы как «n th адрес банка памяти m th », вы бы не задавали этот вопрос, потому что не было бы очевидного отношения, вы бы не смогли выполнить этот акт.