1、scanf(』%d』,&input)
scanf要用位址符&,字串除外:scanf(』%s』,input),因為字串名字即為字串首位址;
scanf(』%s』,input)遇到空格即結束,gets(input)遇到空格不結束,遇到回車結束;
scanf(』%s』,input),如果input是char *,一定要先用malloc開闢空間。
2、printf(』%d』,num)
printf()不需要取位址符,直接用變數名即可;
3、函式定義
c語言不支援函式過載。同一作用區域不可以有函式重名,但不同作用區域中允許函式重名。不同作用區域可以通過在不同檔案中使用static實現。
4、形參、實參
函式呼叫過程中,形參和實參是值傳遞,不會相互影響。
5、函式返回值
如果函式值的型別和return語句中表示式的值不一致,則以函式型別為準。
6、函式宣告
a、 void printmax(int a, int b);
b、 void printmax(int, int);
兩種方式均可。函式宣告可以放在檔案開頭,則此時全部函式均可使用該函式。
7、函式可以巢狀呼叫,但是不可以巢狀定義
8、函式的遞迴
在呼叫乙個函式的過程中又出現直接或者間接地呼叫該函式本身。(漢諾塔問題)
9、陣列定義
type arrayname [ arraysize ];
10、陣列記憶體是連續的
11、在c語言中,二維陣列是按行排列的。
12、字元陣列
字元陣列只有在定義時才能將整個字串一次性地賦值給它,一旦定義完了,就只能乙個字元乙個字元地賦值了
char str[7];
str = "abc123"; //錯誤
//正確
str[0] = 'a'; str[1] = 'b'; str[2] = 'c';
str[3] = '1'; str[4] = '2'; str[5] = '3';
在c語言中,字串總是以』\0』作為結尾,所以』\0』也被稱為字串結束標誌,或者字串結束符。
『\0』是 ascii 碼表中的第 0 個字元,英文稱為 nul,中文稱為「空字元」。該字元既不能顯示,也沒有控制功能,輸出該字元不會有任何效果,它在c語言中唯一的作用就是作為字串結束標誌。字元』\0』的編碼值就是 0。
由" "包圍的字串會自動在末尾新增』\0』
逐個字元地給陣列賦值並不會自動新增』\0』
13、在函式內部定義的變數、陣列、結構體、共用體等都稱為區域性資料。在很多編譯器下,區域性資料的初始值都是隨機的、無意義的,而不是我們通常認為的「零」值。
14、變數的使用遵循就近原則,如果在當前的區域性作用域中找到了同名變數,就不會再去更大的全域性作用域中查詢
全域性變數的作用域從定義開始到本檔案結束,其他檔案不可用,本檔案中定義之上不可用。通過static可以將全域性變數的作用域限定在本檔案中
15、變數的儲存方式
a、靜態儲存區:程式執行期間由系統分配固定的儲存空間
全域性變數全部存放在靜態儲存區
b、動態儲存區:程式執行期間根據需要動態分配儲存空間
(1)函式形式引數;(2)函式中定義的沒有static關鍵字宣告的變數;(3)函式呼叫時的現場保護和返回位址等
16、變數的儲存類別
a、自動儲存(auto);b、靜態分配(static);c、暫存器儲存(register):允許把變數的值放在cpu的暫存器中;d、外部儲存(extern)
17、預設值問題
static定義的變數有預設值,如int為0;陣列中也有預設值;其他的無預設值,值不確定。
陣列預設值如下:
int arr[10]=; //剩餘其他為0
int brr[10]; //brr元素無預設值
18、外部函式
定義函式時預設省略extern,可供其他檔案呼叫。
19、c語言是值傳遞,即便是指標作為引數。
20、使用指標時一定要時刻注意指標的當前值
C語言程式設計注意點3
1 將複雜問題分解為簡單問題的程式設計方法稱為結構化程式設計,其特點為自頂向下 逐步細化 模組化 2 定義常量的方法 define 和const define pi 3.1415926 無分號,無常量型別 const float pi 3.14159 3 函式定義 原型 在ansi c標準中,所有函...
C 程式設計注意點
1.strcpy 是碰到 0就會停止拷貝的,最好使用memcpy和strncpy代替。2.memset並不分配記憶體,malloc才分配。3.迴圈裡面要注意出錯的地方sleep 4.匈牙利命名法 5.臨時變數也要有意義 6.控制代碼要注意釋放,特別是在出錯的地方 7.memset不能過於頻繁 8.物...
C語言的注意點
參考 include int main a typedef struct bb printf d d 2f sizeof a sizeof b sizeof a sizeof b 輸出 24 16 0.00 我的電腦是64位 結構體 涉及記憶體對齊以提高記憶體的利用率,位段的使用。因為32位機器的記...