2 回答
已采納

onemoo
TA貢獻883條經驗 獲得超454個贊
基本上你理解得很正確啊。
ival 是一個初值為60021的 int 變量。
?ip是一個int指針。但沒有初始化,也就是它指向不確定的內存,基本上后面很多問題都是由這點引起的。
還有一點:指針類型和整型間不會發生隱式轉型(除了:指針可以隱式轉型為布爾類型;整型常量0可以隱式轉型為NULL指針)。但很多編譯器對此只會給出警告而不會報錯。
ival = *ip ?語法上沒有錯誤,但 *ip 可能會引起運行時錯誤。
ival = ip ?語法上不允許(見上面的注)。指針不應直接賦值給整型。
*ip = ival ?語法上沒有問題,但同樣會因為 *ip 引起運行時錯誤(因為ip可能指向不可寫內存)。
ip = ival ?同樣整型也不應直接賦值給指針類型,語法錯誤。
*ip = &ival ?這同樣是把指針類型賦值給整型,語法錯誤。且由于 ip 未初始化, *ip 可能引起運行時錯誤。
ip = &ival ?這是正確的!
dp = ip ?這兩個指針類型不匹配,語法錯誤。
dp = *ip ?這還是把整型賦值給指針,語法錯誤。同時 *ip 可能引起運行時錯誤。
*dp = *ip ?這其實是把整型賦值給浮點型,雖然兩側類型不一致,但賦值時會自動發生轉型,所以語法上是沒有問題的! ?但同樣會由于指針未初始化引起運行時問題。
- 2 回答
- 1 關注
- 1287 瀏覽
添加回答
舉報
0/150
提交
取消