catcai,
你的3 楼的这种写法是错误的。
int * p = 77; // the compiler will stop it and give an error info. but why?
// you should see, 77 is a const number while left side of = is an pointer. They are not same type.
// So it is wrong.
now let's see this statement.
int * p = (int *)77; // the question is now, is it true? Can I write it so?
// The answer is still: No!!! What you have writen is very dangerous for your programm.
// Why? Because, under the Addresse 0x4d (77) may be something what you can not manipulate.
// Or some Data saved under the Addresse 0x4d(77), that belong to an another object. After the working
// with it, you would destroy the data. So it is not good to write code in such way. But it is permit.