C語言Scanf函數


 

C語言的scanf函數

一、變量的內存分析

(一)字節與地址

①. 內存以字節為單位 每個字節都有自己的內存地址,根據地址就可以找到該字節。整個內存相當於一整個酒店,而酒店以房間為單位,在這里每個房間就相當於是每個字節,地址就是房號,根據房號可以找到房間(根據地址也可以找到內存中的字節)。相鄰房間的房號是連續的,相鄰字節的地址也是連續的。計算機中通常以十六進制表示地址。

②. 不同類型占用的字節是不一樣的,數據越大則占用的字節數越多。如在64位編譯器下,int類型占據4個字節,char類型占據1個字節。

(二)變量的存儲

重點:內存尋址由大到小,優先分配內存地址較大的字節給變量,所以一般而言越先定義的變量,其內存地址越大。

假設:int a=1;int b=2;下面是對其進行的模擬內存分析。

 

&是取址運算符,用來獲取地址。

%p這個占位符用來輸出地址。

未經初始化的變量,它的值是不確定的,而C語言是弱類型的語言,如果不對一個變量進行初始化並不會報錯,所以提醒變量在使用之前一定要進行初始化。

 

二、Scanf函數

(一)基本介紹

Scanf是系統自帶的函數,聲明包含在stdio.h文件中,因此要是有該函數,必須加載#include<stdio.h>頭文件。當執行到scanf函數時,程序就暫停等待用戶輸入,該函數只接受變量的地址,格式為&變量名。是一個阻塞式的函數,2用戶輸入完畢后,則將值賦值給變量,至此函數調用完畢。敲回車鍵告知計算機鍵入完畢。

(二)使用注意

①. 使用scanf函數輸入一個字符變量。Char a; scanf(“%c”,&a);

②. 同時輸入多個值。Scanf(“%d,%d”,&num1,num2); 

③. Scanf(“%d\n”,&a);//在內部不能使用\n轉義字符,否則沒完沒了。

 

注意:在這里兩個占位符之間是,隔開,則要求在輸入時也使用逗號隔開如輸入1,2。此時為num1=1,num2=2。若內部為“%d#%d”則輸入1#2。若內部為“%dy%d”,則輸入1y2。如果中間的字符是空格,則在輸入時可以用空格隔開,也可以敲tab鍵或者是回車鍵作為分隔符隔開,后兩者可以看做是由空格組成的。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM