4 回答

TA貢獻1966條經(jīng)驗 獲得超4個贊
例如,你編譯連接后得到可執(zhí)行文件名為main.exe
它的源文件如下:
#include "stdafx.h"
int main(int argc, char* argv[])
{
for (int i=0;i<argc;i++)
printf("%s\n",argv[i]);
return 0;
}
運行的時候可以這樣:
在開始->運行中輸入cmd,啟動命令行,進入到main.exe所在的目錄,這時用dir命令可以看到這個文件.如果看不到,則說明當前目錄還不是可執(zhí)行文件所在的目錄,需要更改,用命令cd進行切換.或者設置一下環(huán)境變量.
然后,輸入,main.exe this is a test for main.
如果成功的話,就會輸出.
main
this
is
a
test
for
main
至于,你要將實參傳給main,可以這樣實現(xiàn).
另外寫一個控制臺程序,傳實參以調(diào)用剛才的可執(zhí)行文件.如:
#include "stdafx.h"
#include "windows.h"
int main(int argc, char* argv[])
{
WinExec("main this is a test for main",SW_SHOWNORMAL);
return 0;
}
如上所示,這個程序就是調(diào)用main.exe,并傳一個字符串給它,this is a test for main.
在命令行中直接輸入相應的可執(zhí)行文件就行了,不需要再傳實參了.
如果在C#中,就要參考一下Process這個類了.

TA貢獻1795條經(jīng)驗 獲得超7個贊
不能這樣用,main函數(shù)的原型是
int main(int argc,char *argv[]);
這里
argc是參數(shù)個數(shù).
argv[]是參數(shù)的具體內(nèi)容
main里面的這兩個參數(shù)的作用是從命令行獲得
舉個例子,你的生成EXE文件在目錄 f:\test\debug\,文件名叫 test.exe
那么,你在計算機中,“運行” - “cmd”,在彈出來的黑窗口里,輸入
F:(回車)
cd test\debug
然后執(zhí)行
test.exe param1 param2
(上面輸入了兩個參數(shù))
則你的這個test.exe程序的main函數(shù)main(int argc,char *argv[])中
argc=3; // 三個參數(shù),第一個是程序名,后面二個是自己輸入的其它參數(shù)
argv[0]="test.exe";
argv[1]="param1";
argv[2]="param2";
你可以試著把 printf("%s",*(aa+1))改為printf("%s",*aa);這樣就是輸出第一個參數(shù),即你的程序名(在你直接用IDE調(diào)試時,是直接包含了路徑的,因為沒有切換目錄的過程。)你輸出第二個是不存在的參數(shù)。
你把那兩個變量放在外面是全局變量,不是局部變量,main只要用無參數(shù)的那個就行了。當你把main的形參中的參數(shù)命名成與那個全局變量相同時,起作用的是這個局部變量,而main接收的是外部的輸入。
根據(jù)你的需要,實際上程序應該是這樣的
#include <stdio.h>
#include <stdlib.h>
#include <windows.h>
char *p="132";
char **a=&p;
int main()
{
char **aa=a;
printf("%s\n",*aa ); // 想輸出132,不應該是 *(aa+1)
return 0;
}

TA貢獻1772條經(jīng)驗 獲得超8個贊
1、main函數(shù)可以不帶參數(shù),也可以帶參數(shù),這個參數(shù)可以認為是 main函數(shù)的形式參數(shù)。
C語言規(guī)定main函數(shù)的參數(shù)只能有兩個,還規(guī)定argc(第一個形參)必須是整型變量,argv( 第二個形參)必須是指向字符串的指針數(shù)組。加上形參說明后,main函數(shù)的函數(shù)頭應寫為:
int main (int argc,char *argv[])
2、由于main函數(shù)不能被其它函數(shù)調(diào)用,因此不可能在程序內(nèi)部取得實際值。實際上,main函數(shù)的參數(shù)值是從操作系統(tǒng)命令行上獲得的。當要運行一個可執(zhí)行文件時,在DOS提示符下鍵入文件名,再輸入實際參數(shù)即可把這些實參傳送到main的形參中去。
DOS提示符下命令行的一般形式為:
C:\>可執(zhí)行文件名 參數(shù) 參數(shù)……;

TA貢獻1808條經(jīng)驗 獲得超4個贊
main函數(shù)可以不帶參數(shù),也可以帶參數(shù),這個參數(shù)可以認為是 main函數(shù)的形式參數(shù)。C語言規(guī)定main函數(shù)的參數(shù)只能有兩個,習慣上這兩個參數(shù)寫為argc和argv。因此,main函數(shù)的函數(shù)頭可寫為:
main (argc,argv)
C語言還規(guī)定argc(第一個形參)必須是整型變量,argv( 第二個形參)必須是指向字符串的指針數(shù)組。加上形參說明后,main函數(shù)的函數(shù)頭應寫為:
main (int argc,char *argv[])
由于main函數(shù)不能被其它函數(shù)調(diào)用,因此不可能在程序內(nèi)部取得實際值。那么,在何處把實參值賦予main函數(shù)的形參呢? 實際上,main函數(shù)的參數(shù)值是從操作系統(tǒng)命令行上獲得的。當我們要運行一個可執(zhí)行文件時,在DOS提示符下鍵入文件名,再輸入實際參數(shù)即可把這些實參傳送到main的形參中去。
DOS提示符下命令行的一般形式為:
C:\>可執(zhí)行文件名 參數(shù) 參數(shù)……;
但是應該特別注意的是,main 的兩個形參和命令行中的參數(shù)在位置上不是一一對應的。因為,main的形參只有二個,而命令行中的參數(shù)個數(shù)原則上未加限制。argc參數(shù)表示了命令行中參數(shù)的個數(shù)(注意:文件名本身也算一個參數(shù)),argc的值是在輸入命令行時由系統(tǒng)按實際參數(shù)的個數(shù)自動賦予的。
例如有命令行為:
C:\>E24 BASIC foxpro FORTRAN
由于文件名E24本身也算一個參數(shù),所以共有4個參數(shù),因此argc取得的值為4。argv參數(shù)是字符串指針數(shù)組,其各元素值為命令行中各字符串(參數(shù)均按字符串處理)的首地址。 指針數(shù)組的長度即為參數(shù)個數(shù)。數(shù)組元素初值由系統(tǒng)自動賦予。其表示如圖所示:
【例】
main(int argc,char *argv){
while(argc-->1)
printf("%s",*++argv);
}
本例是顯示命令行中輸入的參數(shù)。如果上例的可執(zhí)行文件名為e24.exe,存放在A驅動器的盤內(nèi)。因此輸入的命令行為:
C:\>a:e24 BASIC foxpro FORTRAN
則運行結果為:
BASIC
foxpro
FORTRAN
該行共有4個參數(shù),執(zhí)行main時,argc的初值即為4。argv的4個元素分為4個字符串的首地址。執(zhí)行while語句,每循環(huán)一次argv值減1,當argv等于1時停止循環(huán),共循環(huán)三次,因此共可輸出三個參數(shù)。在printf函數(shù)中,由于打印項*++argv是先加1再打印, 故第一次打印的是argv[1]所指的字符串BASIC。第二、三次循環(huán)分別打印后二個字符串。而參數(shù)e24是文件名,不必輸出。
添加回答
舉報