main 函數是 C 程式的進入點, 不可或缺, 不可重複;
main 函數應返回一個整數值給作業系統, 返回 0 表示正常結束.
前面使用的 main 函數都是無參數的: int main(void);
main 可以有兩個參數: int main(int argc, char *argv[]);
第一個是自動擷取的參數數目(+1), 第二個是參數列表(字串列表);
這一般用於控制台或 dos 下,
在 Windows 下我們雙擊檔案名稱開啟檔案時, 該檔案名稱(包括路徑)也是通過這些參數傳遞的.
1. 擷取 main 函數第一個參數的預設值:
它會是 1; 我們並沒有給它參數呀? 原來它是把檔案名稱當作第一個參數的.
#include <stdio.h>int main(int argc, char* argv[]){ printf("%d\n", argc); /* 1 */ getchar(); return 0;}
2. 擷取第一個參數(也就是檔案名稱):
#include <stdio.h>int main(int argc, char* argv[]){ printf("%s\n", argv[0]); getchar(); return 0;}
3. 給 main 函數建立並擷取參數列表:
如果是在控制台或 dos 下, 在程式名後面輸入就是了, 現在呢?
C++Builder 菜單 -> Run -> Parameters... -> 在 Parameters 輸入測試參數(譬如: 11 22 33), 用空格隔開.
此對話方塊也可從 Project -> Project Options -> Debuger 進入.
#include <stdio.h>int main(int argc, char* argv[]){ int i; for (i = 1; i
4. 假如需要其他類型的參數:
main 的參數都是字串的(或者說是字元指標的), 要使用其他類型的參數, 譬如 int、double 等, 只能轉換.
#include <stdio.h>#include <stdlib.h>int main(int argc, char* argv[]){ int I; long L; double D; I = atoi(argv[1]); /* 假定至少指定了一個參數 */ L = atol(argv[1]); D = atof(argv[1]); printf("%d, %ld, %g\n", I, L, D); getchar(); return 0;}
5. C++Builder 2009 中的 main 函數:
//標準的 main 函數:int main(int argc, char* argv[]){ return 0;}//C++Builder 2009 中的 main 函數:int _tmain(int argc, _TCHAR* argv[]){ return 0;}/*_tmain 是個 define, 在 tchar.h 中這樣定義: #define _tmain main程式在預先處理階段將會把它替換為: main_TCHAR 是重新命名的 char 類型, 在 tchar.h 中這樣定義: typedef char _TCHAR;看來要想按照 C++Builder 2009 給的預設代碼使用, 是離不開 tchar.h 的.C++Builder 2009 為什麼要這樣? 肯定有理由, 可我不知道.*/