c語言的scanf函式
一、變數的記憶體分析
(一)位元組與位址
①. 記憶體以位元組為單位 每個位元組都有自己的記憶體位址,根據位址就可以找到該位元組。整個記憶體相當於一整個酒店,而酒店以房間為單位,在這裡每個房間就相當於是每個位元組,位址就是房號,根據房號可以找到房間(根據位址也可以找到記憶體中的位元組)。相鄰房間的房號是連續的,相鄰位元組的位址也是連續的。計算機中通常以十六進製制表示位址。
②. 不同型別占用的位元組是不一樣的,資料越大則占用的位元組數越多。如在64位編譯器下,int型別佔據4個位元組,char型別佔據1個位元組。
(二)變數的儲存
重點:記憶體定址由大到小,優先分配記憶體位址較大的位元組給變數,所以一般而言越先定義的變數,其記憶體位址越大。
假設:int a=1;int b=2;下面是對其進行的模擬記憶體分析。
&是取址運算子,用來獲取位址。
%p這個佔位符用來輸出位址。
未經初始化的變數,它的值是不確定的,而c語言是弱型別的語言,如果不對乙個變數進行初始化並不會報錯,所以提醒變數在使用之前一定要進行初始化。
二、scanf函式
(一)基本介紹
scanf是系統自帶的函式,宣告包含在stdio.h檔案中,因此要是有該函式,必須載入#include標頭檔案。當執行到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鍵或者是回車鍵作為分隔符隔開,後兩者可以看做是由空格組成的。
03 C語言 順序結構
順序結構 1 printf 格式1 printf 格式控制 功能 按格式控制指定的格式輸出資料 格式2 printf 普通 佔位符 輸出列表的值 功能 按格式將值輸出 注意1 佔位符 以 開始的,被替換 普通字元 將原樣輸出 佔位符字元 1 d 帶符號十進位制整數 2 u 無符號十進位制整數 3 o...
03 c 程式結構
c 對c語言中的結構體做了2個擴充套件 可以在類中實現函式 可以訪問類中的成員函式,如下 class person 那麼能不能在類的外面實現函式呢?可以,在類中宣告,然後在類外面實現,如下 定義乙個類 class person 類外實現函式 void person setname char n 舉乙...
學習筆記 03 C 型別
型別 支援2種型別 資料型別 包括一些簡單型別 例如,char int和float 列舉型別和結構型別。引用型別 包括類型別 介面型別 代表 delegate 型別和陣列型別。資料型別和引用型別的區別在於,資料型別變數直接包含它們的資料,然而引用型別資料是儲存對於物件的引用。對於引用型別,有可能兩個...