Writer:BYSocket(泥沙磚瓦漿木匠)
微博:BYSocket
豆瓣:BYSocket
~:較重要 ~~:重要
1.1 hello,world
~初學人來說還是一大障礙,手寫編寫程序文本,然后成功的進行編譯,并加載、運行,然后輸出到某個地方。
#include<stdio.h>
int main()
{
??? printf(“hello,world\n”);
??? return 0;
}
思考:renturn 0; 為啥呢? return -1; return 1000;可以嗎? 答案是可以的。
?
~一個C語言程序,無論大小,都是由函數和變量組成。
?
~~#include<stdio.h>用于告訴編譯器在本程序中包含標準輸入/輸出庫的信息。
思考:編譯器?有哪些?干嘛用?
答案是:例如常見的gcc (GNC Compiler Collection)GNC編譯器套件,初衷是為了GNC編寫的一款編譯器。被大部分UNIX采納為標準編譯器。四個相關步驟:預處理 → 編譯 → 匯編 → 鏈接,詳情查閱:gcc百科
?
~用雙引號括起來的字符序列為字符串或者字符串常量。
思考:字符串常量?有木有字符串變量呢?答案是:有的。
?
~~printf函數永遠不會自動換行。
?
1.2變量與算數表達式
~~int與float類型的取值返回取決于具體的機器。
思考:跟機器,還是編譯器?那標準是什么?
答:C標準只規定了short至少16位,long至少32位,long long 至少64位[1],同時long long >= long >= short。至于具體多少由機器上的編譯器決定。
?
~好習慣:每行指書寫一條語句,并在運算符兩本各加上一個空格。
?
~~%6.1f:至少占6個字符寬,精確到小數后一位。%o 表示八進制數,%x表示十六進制數,%c表示字符,%s表示字符串,%%表示%本身。
?
1.3for 語句 1.4 符號常量
~for語句是while語句的推廣。
?
~在程序中,不要使用200,”1″這種幻數
?
~#define指令吧符號名定義為一個特定的字符串。末尾無分號。
?
1.5 字符輸入/輸出
~~輸入和輸出都是按照字符流的方式處理的。問奔流是有多行字符構成的字符序列,而每行字符則由0個或者多個字符組成,行末是個換行符。一次讀/寫一個字符的函數:getchar 和 putchar。
?
1.5.1 文件復制
????~~字符在機器內部都是以為模式存儲的。char類型專門在于存儲這種字符類型數據。
?
??? ~EOF定義在<stdio.h>頭文件,是一個整型數。具體數值是什么并不重要,只要它與任何char類型的值不相同即可。可以確保程序不需要依賴于其對應的任何特定數值。
?
??? ~不等于運算符的優先級高于賦值元算符=。
??
1.5.2 字符統計
????~~long整形,長整型至少要占用32位存儲單元。在某些機器上int與long類型的長度相同,int類型的值只有16位存儲單元的長度。
?
?? ~ @.0f強制不打印小數點和小數部分。
?
??? ~單獨的分號稱為空語句。
?
1.5.3 行計數
???~~單引號字符表示一個整形數,此字符在機器字符集中對應的數值。稱為字符常量。
?
??? ~‘\n’代表換行符的值,ASCII值為10。
?
1.5.4
????~nl = nw = nc =0; 等價于? nl = (nw = (nc =0)); 由右往左。
?
1.6 數組
?? ~ 數組下標可以是任何整形表達式。包括整形變量(如i)以及整形常量。
?
1.7 函數
????~~如果源程序分散在各個文件中,編譯和加載時會做更多的工作,但是這個是操作系統的原因,并不是語言的決定的。
?
??? ~~調用者實際上的就是程序的執行環境,返回為0表示正常終止,非0表示異常情況或者出錯結束條件。
?
??? ~建議:在使用新式的編譯器時,最好使用新式的函數原形聲明方式。
??
1.8 參數-傳值調用
??~ ~在C語言中,所有函數參數都是”通過值”來傳遞的.
?? ~~ 調用者需要想被調用提供設置值得變量地址。地址就是變量的指針。被調用者需要將其設置為指針類型,并通過間接訪問變量。
?
Writer:BYSocket(泥沙磚瓦漿木匠)
微博:BYSocket
豆瓣:BYSocket