為了更好地理解變量在內存中的存儲細節,先來認識一下內存中的“字節”和“地址”。
(1)內存以“字節為單位”
0x表示的是十六進制,不用過於糾結,能看懂這些數字之間誰大誰小就行了
(2)不同類型占用的字節是不一樣的,數據越大,所需的字節數就越多
(1)所占用字節數跟類型有關,也跟編譯器環境有關
(2)變量實例
int b = 10; int a = 20;
●內存由大到小尋址,優先分配內存地址較大的字節給變量。b的內存地址比a大
●每個變量都有地址:第一個字節的地址就是變量的地址
(3)查看內存地址:
int a; printf("a的地址是:%p\n", &a);
(4)注意:下面寫法是不建議的
在變量未經初始化之前,不要嘗試使用變量的值
int a; printf("a的值是:%d\n", a);
這也是在stdio.h中聲明的一個函數,因此使用前必須加入#include <stdio.h>。調用scanf函數時,需要傳入變量的地址作為參數,scanf函數會等待標准輸入設備(比如鍵盤)輸入數據,並且將輸入的數據賦值給地址對應的變量
int age; scanf("%d", &age);
●scanf函數時,會等待用戶的鍵盤輸入,並不會往後執行代碼。scanf的第1個參數是"%d",說明要求用戶以10進制的形式輸入一個整數。這裡要注意,scanf的第2個參數傳遞的不是age變量,而是age變量的地址&age,&是C語言中的一個地址運算符,可以用來獲取變量的地址
● 輸入完畢後,敲一下回車鍵,目的是告訴scanf函數我們已經輸入完畢了,scanf函數會將輸入的值賦值給age變量
(1)用scanf函數接收3個數值,每個數值之間用中劃線-隔開
scanf("%d-%d-%d", &a, &b, &c);
3個%d之間是用中劃線-隔開的,因此我們在每輸入一個整數後都必須加個中劃線-,比如這樣輸入10-14-20,不然在給變量賦值的時候會出問題
●注意:數值之間的分隔符是任意的,不一定要用中劃線-,可以是逗號、空格、星號*、井號#等等,甚至是英文字母
// 逗號, scanf("%d,%d,%d", &a, &b, &c); // 輸入格式:10,14,20 // 井號# scanf("%d#%d#%d", &a, &b, &c); // 輸入格式:10#14#20 // 字母x scanf("%dx%dx%d", &a, &b, &c); // 輸入格式:10x14x20
(2)用scanf函數接收3個數值,每個數值之間用空格隔開
scanf("%d %d %d", &a, &b, &c);
3個%d之間是用空格隔開的,我們在每輸入一個整數後必須輸入一個分隔符,分隔符可以是空格、tab、回車
scanf的第一個參數中不要包含\n,比如scanf(“%d\n”, &a); 這將導致scanf函數無法結束
提示用戶輸入兩個整數n,然後計算並輸出兩個整數的和