int *p,k=10; double *q,f=5.6; p=&k;q=&f; 執行語句p=(int *)q;後,*p的值是()A)一個整數 B)5 C)6 D)10====參考答案是A,求詳細解釋
q一開始是指向double類型的變量,然後強轉為指向int類型的指針並賦值給p,雖然強轉了,但是q依然指向存儲double類型5.6的8個字節的內存區域的起始地址,然後p也指向這段內存,然後對p進行取值,因為p是int類型,所以*p就取得了這段內存的前面四個字節的內容,double類型的機內表示你懂的,其實*p取得的是“垃圾值”。