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 < argc; i++) {
printf("%s\n",argv[i]);
}
printf("---\n");
while (--argc) {
printf("%s\n",argv[argc]);
}
getchar();
return 0;
}
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為什麼要這樣?肯定有理由,可我不知道.
*/
返回“學點C語言 - 目錄”