程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> 學點C語言(41):函數 - 關於main函數

學點C語言(41):函數 - 關於main函數

編輯:關於C語言

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語言 - 目錄”

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved