1.typedef:
C 語言提供了 typedef 關鍵字,您可以使用它來為型別(type)取一個新的名字,
比如:
typedef unsigned char BYTE;
然后你就可以把BYTE當成unsigned char 的縮寫去使用:
BYTE b1,b2;
sub:按照慣例,定義時會大寫字母,以便提醒用戶型別名稱是一個象征性的縮寫,但您也可以使用小寫字母.
和#define的區別:
#define 是 C 指令,用于為各種資料型別定義別名,與 typedef 類似,但是它們有以下幾點不同:
1.typedef 僅限于為型別定義符號名稱,#define 不僅可以為型別定義別名,也能為數值定義別名,比如您可以定義 1 為 ONE,
2.typedef 是由編譯器執行解釋的,#define 陳述句是由預編譯器進行處理的,
3.#define可以使用其他型別說明符對宏型別名進行擴展,但對 typedef 所定義的型別名卻不能這樣做.
4.在連續定義幾個變數的時候,typedef 能夠保證定義的所有變數均為同一型別,而 #define 則無法保證.
2.輸入輸出(Input and output):
熟悉任意一種編程語言的同學都大概知道怎么回事了,不過我們對于C的一些特性進行稍微深入的分析,
a.
C 語言中的 I/O (輸入/輸出) 通常使用 printf() 和 scanf() 兩個函式,
scanf() 函式用于從標準輸入(鍵盤)讀取并格式化, printf() 函式發送格式化輸出到標準輸出(螢屏),
sub:
int i;
char c;
scanf("%d%[^' '^'\n']", &i, &c);
如果遇到輸入比較復雜的情況,盡量用正則運算式去解決,(因為輸入流是有緩沖區的,我們輸入的字符存盤在那,然后再賦值給我們的變數,)
b.
stdio.h 是一個頭檔案 (標準輸入輸出頭檔案) and #include 是一個預處理命令,用來引入頭檔案, 當編譯器遇到 printf() 函式時,如果沒有找到 stdio.h 頭檔案,會發生編譯錯誤,
return 0; 來結束主函式(main function)
c.
和相對高級一點的語言相比,c的 printf() 函式的引號中使用 "%d" (整型) 來匹配整型變數 testInteger 并輸出到螢屏,:
printf("Number = %d", testInteger);
當然,不同的型別有不同的標識;format 可以是一個簡單的常量字串,但是您可以分別指定 %s、%d、%c、%f 等來輸出或讀取字串、整數、字符或浮點數,還有許多其他可用的格式選項,可以根據需要使用,
d.
int getchar(void) 函式從螢屏讀取下一個可用的字符,并把它回傳為一個整數,這個函式在同一個時間內只會讀取一個單一的字符,您可以在回圈內使用這個方法,以便從螢屏上讀取多個字符,
int putchar(int c) 函式把字符輸出到螢屏上,并回傳相同的字符,這個函式在同一個時間內只會輸出一個單一的字符,您可以在回圈內使用這個方法,以便在螢屏上輸出多個字符,
e.
char *gets(char *s) 函式從 stdin 讀取一行到 s 所指向的緩沖區,直到一個終止符或 EOF,
int puts(const char *s) 函式把字串 s 和一個尾隨的換行符寫入到 stdout,
sub:linux系統下需要這樣編譯:不支持 gets 與 puts, 需要用 fgets 和 fputs,需要注意的是,gets 和 puts都不安全,盡量都用fgets 和 fputs替代!
這是因為gets函式由于沒有指定輸入字符大小,所以會無限讀取,一旦輸入的字符大于陣列長度,就會發生記憶體越界,從而造成程式崩潰或其他資料的錯誤,
參考:https://www.runoob.com/cprogramming/c-typedef.html
https://www.runoob.com/cprogramming/c-input-output.html
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/61748.html
標籤:C
下一篇:C學習筆記(8)--- 檔案讀寫
