Conversion of integer pointer to integer

后端 未结 4 701
春和景丽
春和景丽 2021-01-17 21:43

Tried following code to check what happens when we convert integer pointer to a integer .

 #include
 #include
 int main()
 {
          


        
4条回答
  •  礼貌的吻别
    2021-01-17 22:11

    Apparently you confuse the pointer with the content of the pointer.

    As an analogy to the real world, you could say that, with me pointing at a bird, you want to convert my index finger to a bird. But there is no relation between the type 'bird' and 'finger'.

    Transferring that analogy to your program: you are converting the object pointing to your int to an int itself. Since a C pointer is implemented as 'the number of a memory cell', and since there are lots of memory cells available, it's obvious that (int)p will result in a very big number.

    Casting is a nasty thing. It's a coincidence that pointers are quite analogous to integers. If they were implemented as "the nth address of the mth memory bank", you wouldn't be asking this question because there wouldn't have been an obvious relation, and you wouldn't have been able to do this cast.

提交回复
热议问题