1.善於運用符號常量。
把數字埋在程式中沒有任何好處,一方面不能給以後看你程式的人提供什麼資訊,一方面修改起來也很麻煩。
可以用define來定義符號常量。
#define 你想用的名稱 實際的數字或者字串行 /*符號常量一般大寫,與小寫的變數相區分*/
如:#define max 100
注1:define定義的符號變數是沒有型別的,編譯不進行安全檢測,容易出問題,因此也有人說用const 可以完全代替define,
而且更好。
如:const int max = 100
注2:define只是替換。
如:#define a 3+5
const int a = 3+5
一式中 3 * a 就等價於 3 * 3 + 5 = 14
二式中 3 * a 就等價於 3 * 8 = 24
注3:const關鍵字不是真正表示常量,若將上式的a代入switch語句中,
case a:
也會出現錯誤
如果你要深入追究他倆的區別
2.getchar()函式返回的是int型別的資料。
int c;
c=getchar();
3.當心編譯器由於貪心法進行錯誤編譯
比如:將x除以p指標所指向的值,之後結果賦值給y
得: y=x/*p;
但是編譯器會將/* 當成注釋的開始,將x直接賦值給y
正確做法應該是y=x/(*p)
4.用單引號引起來的相當於乙個數字,用雙引號引起來的末尾還有 '\0'
5.float *g() 指g()函式返回浮點型別的指標
float (*g)() 為指向返回的浮點型別的函式指標
6.多個運算子要按計算順序打括號,避免考慮不到符號優先順序方面的問題產生錯誤的運算。
7.小心if、for、while後的分號位置,注意switch中,case後的break和最後的default。
若故意不加break語句,可以寫個注釋標明。
8.c語言中else總與最近的if想匹配
if if
else
這樣的結構最後也會自動變成
if if
else
(不像python那樣,縮排對齊就行)
因此要養好習慣
ifif
else
這樣才和第乙個if想匹配,因為第二個if被「封裝」了
9.對陣列的操作就是對指標的操作。把陣列當作引數代入函式,其實代入的就是指向第乙個元素的指標。
main(int argc,char *ar**[ ] )
等價於main(int argc,char **ar**)
10.資料的邊界問題。避免欄杆錯誤。
C語言高階指標 1
c語言的指標是c語言這門語言的精華所在,當然也是讓很多人詬病的地方。指標是什麼?有這麼一句話 對於錘子來說,一切都是釘子。那麼換句話講指標,即 對於指標來說,一切都是位址 記憶體是由乙個個記憶體單元構成的,每個記憶體單元都有自己的位址。而指標就是用來存放這些位址的。凡是可以用指標來儲存的變數,在指標...
C語言高階 指標的高階 1
目錄 指標定義 指標變數,用於存放位址。位址唯一對應一塊記憶體空間。指標大小 固定32位平台下佔4個位元組,64位8個位元組。指標型別 型別決定指標整數的步長及指標解引用時訪問的大小。指標運算 指標解引用,指標整數,指標 指標,指標關係運算。本章節在此基礎上,對c語言階段指標進行更深層次的研究。字元...
C語言總結 1
1.識別符號 識別符號由字母數字構成,必須由字母開頭 下劃線 算作字母,但不要用下劃線作為識別符號的首字母,因為庫中通常用下劃線作為識別符號首字母,你如果這樣用容易引起衝突 識別符號是區分大小寫的,int a和int a代表不同的變數 關鍵字不能用作識別符號 c語言區分內部名和外部名,內部名僅出現於...