#include<stdio.h>
int main()
{
int i = 5;
float a = 3.14;
char*ii,*aa;
ii = (char*)&i;
aa = (char*)&a;
printf("address contained in ii=%u\n",ii);
printf("address contained in aa=%u\n",aa);
printf("value at address contained in ii=%d\n",*ii);
printf("value at address contained in aa= %d\n",*aa);
return(0);
}
/*the output for the following program was
address contained in ii=65524
address contained in aa=65520
value at address contained in ii=5
value at address contained in aa=-61*/
一個什麼是ii = (char*) &i
和aa = (char*) &a
也意義爲什麼在ii
地址編譯器打印值是正確的,並在aa
是錯誤的?如果您使用其他值i
,比如327,則ii
中包含的地址值將變成別的東西。有人可以向我解釋嗎?我無法從編寫代碼的書中得到正確的解釋。是什麼II =(字符*)的含義與我和=(字符*)在下面的代碼
程序源代碼:理解c中的指針。作者:yashvant kanetkar,第4版。
該程序有問題,它可能很舊。要打印指針的地址,您需要將其轉換爲'void *'並使用'「%p」'printf()'說明符。該程序也是不正確的,作者通過別名指針解引用指針,該別名指針調用未定義的行爲。 –
該程序不應該編譯。你是如何得到*輸出*的? –
@BlueMoon我沒有看到'float a = 3,14'。 –