數據
一、是什么?
數據就是數值.數據有很多種,最簡單的就是數字.數據也可以是 文字,圖像,聲音等
二、有什么用?
保存我們的記錄,用于以后使用
三、怎么用?
由0和1組成,用設備存儲
四、什么時候用?
當你需要對數據進行操作使用時
五、有什么特點?
1.分為靜態數據和動態數據(內存)
2.只由0和1組成
3.最小單位是bit
1byte字節=8bit
常量
一、是什么?
是一些固定的數據,有四大類型;整型 ?浮點型(單行度和雙精度) ?字符型 ? 字符串型
二、有什么用?
表示一些固定不變的數據
三、怎么用?
字面常量.
比如: 1 //整型字面常量 ?1.0f //單精度字面常量
'a' //字符字面常量(只能是一個非中文字符) ?"hello world"字符串字面常量
字符串常量與字符常量不同的地方是,字符串常量是用""把字符串括起來,所以'a'和"a"是不一 樣的,而且系統會在字符串常量的末尾自動加一個字符串結束標志('\0')。
符號常量(也叫常變量):即用一個標識符來表示常量,一般用const來指明
如 :constint ?MAX_SIZE = 365;//定義一個符號常量MAX_SIZE.
也可以使用宏定義,通過預處理指令來替換符號常量
如:上面的MAX_SIZE可以寫成#define MAX_SIZE ?365
四、什么時候用?
當需要給變量賦值或者定義一個不變的數據
五、有什么特點?
數據不會被改變!
變量
一、是什么?
變量來源于數學,是計算機語言中能存儲計算結果或 者能表示 值抽象概念
變量是內存的一塊兒存儲單元用來存儲經常變化的數據
變量由兩要素構成:變量名與變量類型。
變量類型+變量名 = 變量
二、有什么用?
用來表示一個需要改變或者不確定的數據
變量分為全局變量,局部變量。全局變量定義在函數外部,程序開始到結束都一直在,而局部 變量定義在函數內部,只能供函數使用,在函數內部有效
三、怎么用?
變量類型+變量名 ?如;int num;
賦值: ?num = 1; 修改 num = 2;
四、什么時候用?
需要定義一個經常改變或者不確定的數據
五、有什么特點?
1.創建一個變量相當于在內存中占用了一塊空間
2.這個空間的大小是固定的,但是里面的數據可以改變
3.同一個作用域內不能有相同的變量名
4.初始化時創建,在函數作用域執行完后失效,且內存空間釋放
變量輸出及printf函數用法
一、是什么?
C語言下的printf()函數是樣式化輸出函數,由C語言自帶的庫提供
二、有什么用?
在控制臺上按照你需要的格式輸出你定義的數據
三、怎么用?
1.#include//引入頭文件,表示在這個文件里要用到里面的printf()函數
2.printf("<格式化字符串>",<參量表>)
3.格式化規定字符,以%開始 ?后面跟一個或幾個規定的字符
常用%d整數, %f浮點數 %c單個字符 ?%s字符串%p指針的值
四、什么時候用?
當你想輸出結果的時候
五、有什么特點?
1.可以單個輸出,也可以加批量輸出,以逗號分割
2.格式化是%開始. ?%前面可以加任意的字符串,會按原樣輸出.
printf的格式控制的完整格式:
% - 0 m.n l或h 格式字符
下面對組成格式說明的各項加以說明:
1%:表示格式說明的起始符號,不可缺少。
2-:有-表示左對齊輸出(右側補空格),如省略表示右對齊輸出(左側補空格)。
30:有0表示指定空位填0,如省略表示指定空位不填。
4m.n:m指域寬,即對應的輸出項在輸出設備上所占的字符數。N指精度。用于說明輸出的實型 數的小數位數。對數值型的來說,未指定n時,隱含的精度為n=6位。
5l或h:l對整型指long型,對實型指double型。h用于將整型的格式字符修正為short型。
格式字符 格式字符用以指定輸出項的數據類型和輸出格式。1d格式:用來輸出十進制整數。有以下幾種用法:%ld:輸出長整型數據。
2o格式:以無符號八進制形式輸出整數。對長整型可以用"%lo"格式輸出。同樣也可以指定字段寬 度用“%mo”格式輸出。
例:
main()
{ int a = -1; printf("%d, %o", a, a);
}
運行結果:-1,177777程序解析:-1在內存單元中(以補碼形式存放)為(1111111111111111)2,轉換為八進制數為 (177777)8。
3x格式:以無符號十六進制形式輸出整數。對長整型可以用"%lx"格式輸出。同樣也可以指定字段 寬度用"%mx"格式輸出。
4u格式:以無符號十進制形式輸出整數。對長整型可以用"%lu"格式輸出。同樣也可以指定字段寬 度用“%mu”格式輸出。
5c格式:輸出一個字符。
6s格式:用來輸出一個串。有幾中用法
%s:例如:printf("%s", "CHINA")輸出"CHINA"字符串(不包括雙引號)。%ms:輸出的字符串占m列,如字符串本身長度大于m,則突破獲m的限制,將字符串全部輸出。若串 長小于m,則左補空格。
%-ms:如果串長小于m,則在m列范圍內,字符串向左靠,右補空格。%m.ns:輸出占m列,但只取字符串中左端n個字符。這n個字符輸出在m列的右側,左補空格,注 意:如果n未指定,默認為0。%-m.ns:其中m、n含義同上,n個字符輸出在m列范圍的左側,右補空格。如果n>m,則自動取n 值,即保證n個字符正常輸出,注意:如果n未指定,默認為0。
如果是sprintf(desc, "%m.ns", sour); 如果desc空間夠的話,會在%m.ns 串 的結尾自動補null 字符,不同于strncpy。
例如 :sprintf(desc, "%.3s", "123456");desc如果空間>=4字節的話,第4個字節將是null字 符。
%f輸出精度: 7個有效數字,小數點后8位.
變量的初始化
int a; //不會報錯,a里面存的內容:
1)隨機數
2)上次程序分配的存儲空間,存數一些 內容,“垃圾”
3)系統正在用的一些數據
1)定義的同時進行初始化
int a = 10;
int a,b=10; //部分初始化
int a=4,b=2;
2)先定義,后初始化
int a;
a = 10;
3)使用一個變量進行初始化
int a;
int b = 10;
a = b; //使用b去初始化a
4)還可以批量的進行初始化
int a,b,c;
a = b =c =0;
注意: 變量的第一次賦值被成為稱為初始化,以后再賦值相當于覆蓋了上一次的值
變量的使用:
注意:
(1)賦值的時候,= 號的左側必須是變量(10=b,錯)
(2)規范:習慣將 = 的兩側 各加上一個 空格
變量作用域:
C語言中所有變量都有自己的作用域,申明變量的類型不同,其作用域也不同。C語言中的變 量,按照作用域的范圍可分為兩種, 即局部變量和全局變量。
局部變量
關于局部變量的作用域還要說明以下幾點:
(1)主函數中定義的變量也只能在主函數中使用,不能在其它函數中使用。同時,主函數中 也不能使用其它函數中定義的變量。因為主函數也是一個函數,它與其它函數是平行關系。
(2)形參變量是屬于被調函數的局部變量,實參變量是屬于主調函數的局部變量。
(3)允許在不同的函數中使用相同的變量名,它們代表不同的對象,分配不同的單元,互不 干擾,也不會發生混淆。雖然允許在不同的函數中使用相同的變量名,但是為了使程序明了易 懂,不 提倡在不同的函數中使用相同的變量名
全局變量
全局變量也稱為外部變量,它是在函數外部定義的變量。
全局變量的說明符號為 extern
對于全局變量還有以下幾點說明:1.對于局部變量的定義和說明,可以不加區分。而對于外部變量則不然,外部變量的定義和外部變量的說明并不是一回事。外部變量定義必須在所有的函數之外,且只能定義一次。其一般形式為: [extern] 類型說明符 變量名,變量名... 其中方括號內的extern可以省去不寫。
例如: int a,b;等效于:extern int a,b;
2.而外部變量說明出現在要使用該外部變量的各個函數內,在整個程序內,可能出現多次,外部變量說明的一般形式為: extern 類型說明符 變量名,變量名,...; 外部變量在定義時就已分配了內存單元,外部變量定義可作初始賦值,外部變量說明不能再賦初始值, 只是表明在函數內要使用某外部變量。
3.外部變量可加強函數模塊之間的數據聯系,但是又使函數要依賴這些變量,因而使得函數的
獨立性降低。從模塊化程序設計的觀點來看這是不利的, 因此在不必要時盡量不要使用全局變量。
4.在同一源文件中,允許全局變量和局部變量同名。在局部變量的作用域內,全局變量不起作用(就近原則).
為了合理的使用內存空間,所以變量一定要區分類型