一、一切都是數據
對計算機來說,圖片、文字、音樂、視頻等一切都是數據,在計算機中以二進制的0和1存儲。
我們編寫程序的目的就是告訴計算機如何輸入、處理、傳輸、存儲和展示數據。
數據分為靜態數據和動態數據。
1、靜態數據
永久性的數據,存儲在永久的介質中,如硬盤、磁帶、U盤、光盤等,只要介質沒壞數據都是存在的,電腦關機重啟后依然存在。
2、動態數據(臨時數據)
程序在運行過程中,動態產生的的臨時數據,一般存儲在內存中,程序退出或者電腦關機時這些臨時數據會被清除。
為什么不把動態數據存放到硬盤?因為計算機訪問內存的速度比訪問硬盤快很多。硬盤的存儲空間比內存大,價格比內存便宜。
二、常量
常量或常數,表示固定不變的數據,是具體的數據。
1)字符常量,如'6','a','F',不能是中文,例如'女',因為一個漢字和全角的符號占兩個字節(GBK編碼)。
2)整型常量,如6,27,-299。
3)浮點型常量,如5.43,-2.3,5.67,6.0。
4)字符串常量,如"625","女","www.freecplus.net","西施"。
三、變量
常量是數據,變量是存放數據的容器,和常量在稱呼上只差一個字,但不是兄弟關系,而是水與水桶的關系。
變量使用前必須先進行聲明(或定義),向操作系統申請一塊內存空間,用於存放數據。
1、整數型、字符型、浮點型變量
變量的聲明,也稱之為變量的定義,或定義變量,或聲明變量,這些都是程序員的習慣叫法,實際上都是同一個意思。
定義整數型變量用關鍵字int,它是單詞integer(整數)的縮寫。
int ii; // 定義整數型變量,用於存放整數。
定義字符型變量用關鍵字char,它是單詞character(字符)的縮寫。
char cc; // 定義字符型變量,用於存放字符。
定義浮點型變量用關鍵字float或double,float的精度不夠,實際開發中建議棄用。double,雙精度,很精確的意思。
double money; // 定義浮點型變量,用於存放浮點數。
2、字符串變量
在C語言中,沒有“字符串”這個數據類型,而是用字符數組來存放字符串,並提供了豐富的庫函數來操作字符串。
char name[21]; // 定義一個可以存放20字符的字符串。
注意幾個細節:
1)如果要定義一個存放20個英文的字符串,數組的長度應該是20+1,原因以后再討論。
2)中文的漢字和標點符號需要兩個字符寬度來存放。
例如name[21]可以存放20個英文字符,或10個中文字符。
3)字符串不是C語言的基本數據類型,不能用“=”賦值,不能用“>”和“<”比較大小,不能用“+”拼接,不能用==和!=判斷兩個字符串是否相同,要用函數,具體方法我以后再介紹,現在了解就可以。
3、變量的命名
變量名屬於標識符,需要符合標識符的命名規范,具體如下:
1)變量名的第一個字符必須是字母或下划線,不能是數字和其它字符。
2) 變量名中的字母是區分大小寫的。比如 a 和 A 是不同的變量名,num和Num也是不同的變量名。
3)變量名絕對不可以是C語言的關鍵字。
4)關於變量的命名,為了便於理解,盡可能用英文單詞或多個英文單詞的簡寫,太短不能表達含義,太長了書寫麻煩,如果英語不好,那就用中文拼英的第一個字母,例如身份證號碼,cardid、userid都可以,sfzhm也行,不要怕被笑話,英語不好的程序員很多。
四、C語言的關鍵字
關鍵字也稱為保留字,共32個,這些單詞在C語言中有特別的含義,程序員不能把它用於變量或函數的命名。
auto :聲明自動變量
break:跳出當前循環
case:開關語句分支
char :聲明字符型變量或函數返回值類型
const :聲明只讀變量
continue:結束當前循環,開始下一輪循環
default:開關語句中的“默認”分支
do :循環語句的循環體
double :聲明雙精度浮點型變量或函數返回值類型
else :條件語句否定分支(與 if 連用)
enum :聲明枚舉類型
extern:聲明變量或函數是在其它文件或本文件的其他位置定義
float:聲明浮點型變量或函數返回值類型
for:一種循環語句
goto:無條件跳轉語句
if:條件語句
int: 聲明整型變量或函數
long :聲明長整型變量或函數返回值類型
register:聲明寄存器變量
return :子程序返回語句(可以帶參數,也可不帶參數)
short :聲明短整型變量或函數
signed:聲明有符號類型變量或函數
sizeof:計算數據類型或變量長度(即所占字節數)
static :聲明靜態變量
struct:聲明結構體類型
switch :用於開關語句
typedef:用以給數據類型取別名
unsigned:聲明無符號類型變量或函數
union:聲明共用體類型
void :聲明函數無返回值或無參數,聲明無類型指針
volatile:說明變量在程序執行中可被隱含地改變
while :循環語句的循環條件
C語言的關鍵字無需背誦,如果程序用不小心用了關鍵字給變量命名,編譯時會報錯,用多了就熟悉了。
五、變量的初始化
變量在定義后,操作系統為它分配了一塊內存,但並不會把這塊內存打掃干靜,也就是說內存中可能有垃圾數據,建議在使用之間對其初始化(打掃干靜)。
變量初始化是一個良好的編程習慣,否則有時候程序可能會產生意想不到的結果。
1、整數型、字符型、浮點型變量初始化
對整數型、字符型、浮點型變量來說,初始化就是給它們賦0值。
可以在定義的時候立即初始化。
int ii=0; // 定義整數型變量並初始化
char cc=0; // 定義字符型變量並初始化
double money=0; // 定義浮點型變量並初始化
也可以先定義,然后再初始化。
int ii; // 定義整數型變量
char cc; // 定義字符型變量
double money; // 定義浮點型變量
ii=0; // 初始化ii為0
cc=0; // 初始化cc為0
money=0; // 初始化money為0
2、字符串變量的初始化
對字符串變量來說,初始化就是把內容清空,本質上也是賦0值。
char name[21]; // 定義一個可以存放20字符的字符串
memset(name,0,sizeof(name)); // 清空字符串name中的內容
注意了,字符串變量的初始化與其它類型不同,要用memset函數,先不要問為什么,就這么抄,以后再解釋,先不要花時間和精力去研究它。
六、變量的賦值
把常量的值賦給變量:
ii=10; // 整數型變量賦值10
cc='A'; // 字符型變量賦值'A'
money=1500.87; // 浮點型變量賦值1500.87
strcpy(name,"西施"); // 對字符串變量賦值"西施"
把變量的值賦給變量:
int ii1=ii; // 定義變量ii1並把ii的值賦給它
char cc1=cc; // 定義變量cc1並把cc的值賦給它
double money1=money; // 定義變量money1並把money的值賦給它
char name1[21]; // 定義字符串變量name1
strcpy(name1,name); // 把name的值賦給name1
注意了,字符串變量的賦值與其它類型不同,不能用=號,要用strcpy函數,先不要問為什么,就這么抄,以后再解釋,先不要花時間和精力去研究它。
示例(book6.c)
/*
* 程序名:book6.c,此程序演示變量的賦值
* 作者:C語言技術網(www.freecplus.net) 日期:20190525
*/
#include <stdio.h>
#include <string.h>
int main()
{
int ii=0; // 定義整數型變量並初始化
char cc=0; // 定義字符型變量並初始化
double money=0; // 定義浮點型變量並初始化
char name[20]; // 定義字符串變量
memset(name,0,sizeof(name)); // 字符串初始化
ii=10; // 整數型變量賦值10
cc='A'; // 字符型變量賦值'A'
money=1500.87; // 浮點型變量賦值1500.87
strcpy(name,"西施"); // 對字符串變量賦值"西施"
printf("ii=%d=\n",ii);
printf("cc=%c=\n",cc);
printf("money=%f=\n",money);
printf("name=%s=\n",name);
}
運行效果
七、多變量操作
1、多個變量的定義
定義多個變量可以書寫多條語句。
int ii;
int jj;
相同類型變量的定義可以書寫為一條語句,如下:
int ii,jj;
2、多個變量的賦值
整數、字符和浮點型變量可以用一條語句對多個變量賦相同的值,如果要賦不同的值,只能用多條語句了。
ii=jj=10; // 對ii和jj賦相同的值10
ii=jj=30; // 對ii和jj賦相同的值30
ii=10; // 對ii賦值10
jj=30; // 對jj賦值30
不論值是否相同,一條語句只能對一個字符串變量賦值。
strcpy(name,"西施"); // 對字符串變量name賦值"西施"
strcpy(name1,"西施"); // 對字符串變量name1賦值"西施"
strcpy(name,name1,"西施"); // 這是個天才的想法,但行不通,不符合strcpy函數的語法。
這是個天才的想法,但行不通,不符合strcpy函數的語法。
八、const約束
const 是 constant 的縮寫,意思是“恆定不變的”,它是定義只讀變量的關鍵字。用 const定義只讀變量的方法很簡單,就在定義變量時前面加 const 即可,如:
const double pi = 3.1415926;
用 const定義的變量的值是不允許改變的,不允許給它重新賦值,即使是賦相同的值也不可以。所以說它定義的是只讀變量。這也就意味着必須在定義的時候就給它賦初值,如果程序中試圖改變它的值,編譯的時候就會報錯。
示例(book7.c)
/*
* 程序名:book7.c,此程序演示只讀變量
* 作者:C語言技術網(www.freecplus.net) 日期:20190525
*/
#include <stdio.h>
int main()
{
const double pi=3.1415926; // 定義只讀變量
pi=3.1415927; // 試圖改變只讀變量的值。
}
編譯效果
九、課后作業
本章節介紹的是一些基本概念,各位只要理解了這些概念就行了,編寫示例程序,把本章節介紹的知識點全部演示一遍,用程序演示可以加深理解和映象。
還有一個注意事項,C語言很多知識點是交叉的,如果課程中出現的內容是沒有介紹的知識點,先照抄就行,不要去糾結它的細節,以后在合適的時機再介紹它。
十、版權聲明
C語言技術網原創文章,轉載請說明文章的來源、作者和原文的鏈接。
來源:C語言技術網(www.freecplus.net)
作者:碼農有道
如果文章有錯別字,或者內容有錯誤,或其他的建議和意見,請您留言指正,非常感謝!!!