- 版權聲明:本文為博主原創文章,未經博主允許不得轉載。
一、變量的內存分析
- (一)字節與地址
①. 內存以字節為單位 每個字節都有自己的內存地址,根據地址就可以找到該字節。整個內存相當于一整個酒店,而酒店以房間為單位,在這里每個房間就相當于是每個字節,地址就是房號,根據房號可以找到房間(根據地址也可以找到內存中的字節)。相鄰房間的房號是連續的,相鄰字節的地址也是連續的。計算機中通常以十六進制表示地址。
②. 不同類型占用的字節是不一樣的,數據越大則占用的字節數越多。如在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鍵或者是回車鍵作為分隔符隔開,后兩者可以看做是由空格組成的。