C語言第五節scanf函數

  1. 變量的內存分析

  1. 字節和地址

爲了更好地理解變量在內存中的存儲細節,先來認識一下內存中的"字節"和"地址"。函數

  1. 內存以"字節爲單位"

0x表示的是十六進制,不用過於糾結,能看懂這些數字之間誰大誰小就好了spa

  1. 不一樣類型佔用的字節是不同的,數據越大,所需的字節數就越多

 

  1. 變量的存儲

  2. 所佔用字節數跟類型有關,也跟編譯器環境有關

  1. 變量實例

int b = 10; blog

int a = 20; 內存

  • 內存由大到小尋址,優先分配內存地址較大的字節給變量。b的內存地址比a大
  • 每一個變量都有地址:第一個字節的地址就是變量的地址
  1. 查看內存地址:

int a; 編譯器

printf("a的地址是:%p\n", &a); io

  1. 注意

在變量未經初始化以前,不要嘗試使用變量的值編譯

int a; 變量

printf("a的值是:%d\n", a); im

上面的寫法是不建議數據

 

  1. scanf函數

  1. 簡介

這也是在stdio.h中聲明的一個函數,所以使用前必須加入#include <stdio.h>。調用scanf函數時,須要傳入變量的地址做爲參數,scanf函數會等待標準輸入設備(好比鍵盤)輸入數據,而且將輸入的數據賦值給地址對應的變量

 

  1. 簡單用法

int age;

scanf("%d", &age);

  • scanf函數時,會等待用戶的鍵盤輸入,並不會日後執行代碼。scanf的第1個參數是"%d",說明要求用戶以10進制的形式輸入一個整數。這裏要注意,scanf的第2個參數傳遞的不是age變量,而是age變量的地址&age&C語言中的一個地址運算符,能夠用來獲取變量的地址
  • 輸入完畢後,敲一下回車鍵,目的是告訴scanf函數咱們已經輸入完畢了scanf函數會將輸入的值賦值給age變量

 

  1. 其餘用法

  2. scanf函數接收3個數值,每一個數值之間用中劃線-隔開

scanf("%d-%d-%d", &a, &b, &c);

3%d之間是用中劃線-隔開的,所以咱們在每輸入一個整數後都必須加個中劃線-,好比這樣輸入,否則在給變量賦值的時候會出問題

  • 注意數值之間的分隔符是任意的,不必定要用中劃線-,能夠是逗號、空格、星號*、井號#等等,甚至是英文字母

// 逗號,

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

 

  1. scanf函數接收3個數值,每一個數值之間用空格隔開

scanf("%d %d %d", &a, &b, &c);

3%d之間是用空格隔開的,咱們在每輸入一個整數後必須輸入一個分隔符,分隔符能夠是空格tab回車

 

  1. 注意

scanf的第一個參數中不要包含\n,好比scanf("%d\n", &a); 這將致使scanf函數沒法結束

 

  1. 習題

提示用戶輸入兩個整數n,而後計算並輸出兩個整數的和

 

內容來源:傳智播客

相關文章
相關標籤/搜索