int main(){
int a = 330;
char *p;
p = (char *) &a;
printf("%d",*p);
return 0;
}
這是怎麼回事74? Plz解釋?代碼示例的輸出
int main(){
int a = 330;
char *p;
p = (char *) &a;
printf("%d",*p);
return 0;
}
這是怎麼回事74? Plz解釋?代碼示例的輸出
如果整數爲4個字節,有4層字符的在它。試着去了解這段代碼的輸出:
int main() {
int a =330, i;
char *p;
printf("%08x\n", a);
p=(char *)&a;
for (i = 0; i < sizeof(int); i++) {
printf("%02x ", p[i]);
}
printf("\n");
for (i = 0; i < sizeof(int); i++) {
printf("%02d ", p[i]);
}
printf("\n");
return 0;
}
打印:
0000014a
4a 01 00 00
74 01 00 00
現在繼續解釋小端和大端;-))。 – 2014-10-08 06:50:15
在這裏,您使用的是字符指針指向一個整型變量。 由於字符只是一個字節,你會得到74。 如果你用了一個整數指針,那麼你就已經得到330
330 in binary is : 0000 0001 0100 1010
你在這裏看到的值
74 : 0100 1010(1byte)
爲什麼你認爲它不會是74?你瞭解代碼嗎?如果不是,你讀過一本書或教程解釋它?如果不是,爲什麼不呢? – nvoigt 2014-10-08 06:44:27
那你以爲是什麼時候呢? – 2014-10-08 06:45:28
[這個鏈接會給你答案的答案](http://www.c4learn.com/c-programming/pointer-arithmatics-pre-requisites/) – 2014-10-08 06:45:30