1樓:王勃啊
你不要管3221216112這個數字
它顯示出來只是希望告訴你差值
3221216112 和 3221216128 的差值的一定的。因為 3221216112 指向的是a的首地址
而3221216128 指向的是a[4]的地址,他們相差 4*4=16個地址。
至於3221216128 是怎麼來的,這是一個隨機又固定的數字。
隨機是說不同的編譯器產生的數字不通,固定是說每次執行都幾乎會產生相同的數字
2樓:西門吹李記
p1,p2分別為陣列a中a[0],a[4]的地址,就是對應變數的記憶體區域在計算機記憶體中的地址。
現在一般電腦的記憶體都有4g左右,約4*10^9個位元組。例程中a[0]實際儲存的地址就是在記憶體中地址從3221216112開始的4個位元組
a[0]地址範圍:3221216112~3221216115,p1指向a[0]首地址就是3221216112
a[1]地址範圍:3221216116~3221216119
以此類推a[2],a[4],
a[5]地址範圍:3221216128~3221216131,p2指向的記憶體區為3221216128
因為p1,p2是同一個陣列的元素的指標,因為元素之間有前後順序,故可相減,差等於陣列元素下標只差,為4。
p1和p2強制型別轉換成int型為x和y後後丟掉了陣列相關的特性,稱為純整數了,相加減就是純數字加減了故y-x=3221216128-3221216112=16
因為y數值比x大,故y>x為1
3樓:飄遙舞者
指標輸出的是地址,變數輸出的是地址的整數值
c語言中實現輸入一個數字字元,然後轉換成整數數字輸出.怎麼做? 10
4樓:匿名使用者
字串轉整數可以有兩種方法:
1.使用c語言自帶的庫函式:atoi。
函式原型:int atoi(const char *nptr);
功能:把字串轉成整型數。
例如:#include
#include
int main(void)
/*輸出:
int = 12345
*/2.可以自己編寫一個轉換函式:
#include
#include
int atoi(char *s)
return(t);
}int main ()
/*輸出:
n = 12345*/
5樓:死亡盛世
我只知道資料型別能相互轉換,但貌似字元和整形無法用一句程式轉換吧,如果你想寫多句程式來轉換,可直接用switch語句,對'0'-'9'進行判斷,直接輸出0-9,不知道這樣行不行的通。
6樓:
char c;
int n;
c = getchar();
n = c;
printf(%d,n);
/*也可以直接輸出c*/
printf(%d,c);
如果要數字對應輸出就這樣寫
char c;
int n;
c = getchar();
n = c-48;/*48是0的ascii碼值*/printf(%d,n);
C語言程式為什麼最後的輸出結果是這個
getchar接收的是 字元 putchar輸出的也是字元 它們不會接收和輸出整數!第一次c 2 執行case 0 後面的語句直到遇到break 所以輸出是 6 6 顯示就是66。第二次c 4 執行case 2 後面的語句直到遇到break 所以輸出是 8 顯示就是668。第三次c 7 執行defa...
c語言,以下程式的輸出結果是,C語言問題 以下程式的輸出結果是?
輸出1 3 這是遞迴了,所以先是fun 3 進入後發現3 2 1,所以又繼續func 3 2 也就是fun 1 進入發現1 2 0,就執行prinft,輸出1,然後fun 1 就返回了 返回出去正好是fun 3 的prinft,輸出3 進入fun 3 進入fun 1 輸出1退出fun 1 輸出3退出...
C語言題,以下程式的輸出結果是,c語言題 以下程式的輸出結果是。 include stdio h void main i?
初出茅廬 include stdio.h main printf d n a 結果是31,我說的只是原理,你可以根據上面別人說的過程就會明白的。 經過理論分析i 1時,進入程式,執行語句a 3 即a a 3,a 3,再執行a 5,即a a 5 3 5 8 然後馬上輸出結果a 8,你用單步追蹤法,也可...