#include <stdio.h>
int *pi;
short gi = 12;
void main()
{
pi = (int *)&gi;
printf("*pi = %d, *pi = %x\n",*pi, *pi);
}
/***********************************************/
#include <stdio.h>
void main()
{
int *pi;
short gi = 12;
pi = (int *)&gi;
printf("*pi = %d, *pi = %x\n",*pi, *pi);
}
這兩段代碼的結果為什么有這么大的不同,和全域變數與區域變數存放資料的地址有關系嗎,還有區域定義的時候不能看到記憶體地址,用的是VS2005編譯器
uj5u.com熱心網友回復:
結果是什么啊uj5u.com熱心網友回復:
結果應該是一樣的uj5u.com熱心網友回復:
結果應該不一樣吧。。。uj5u.com熱心網友回復:
short定義在區域變數里,占用兩個位元組,當指標擴展為4位元組,前2位元組(記憶體里應該是后2位元組)內容可能是未知的.short定義在全域變數里,占用的也是2位元組,但全域變數是對齊的,所以初始化的時候是按4位元組初始化的,所以擴展了以后讀取也沒出錯.
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/58990.html
下一篇:怎么用貪心法解決地圖著色問題
