QtCreator是非常不錯的IDE, 當需要在調試的時候為 main() 傳入參數。
可在“項目-構建和運行-運行”下找到參數輸入處:
C語言的 main() 可以有以下幾種寫法:
1. int mian(void)
2. int main(int argc)
3. int main(int argc, char *argv[])
4. int main(int argc, char *argv[], char *env[])
另外也有其他一些不太符合標准、不常見的寫法。關於main() 的寫法問題可以參見《你所未必了解的main()函數的事情》一文。
上面 4 種寫法中,1 和 3 較為常見,由於 argc 和 argv 通常搭配使用,所以方法 2 不常使用,方法 4 並不是所有編譯器都支持,所以也很少使用。
根據 C99 標准,main() 函數必須有 int 類型的返回值,不寫返回值或者返回值為 void 類型都是不建議的,雖然有些編譯器還支持這類寫法。
同樣,一定要為 main() 指明參數類型 ,如果沒有參數要在括號內填寫 void ,不可留空。
參數 argc 代表了輸入參數個數,操作系統為 mian() 傳入的 argc 至少為1,其值為該應用程序的名字;
參數 argv 表示傳入參數的字符串,是一個字符串數組;
參數 env 內容是操作系統傳入的環境變量字符串,同樣是一個字符串數組。
1、int main(int argc, char *argv[]):
其中argv為指針的指針可以char **argv or: char *argv[] or: char argv[][]來表示,argc為整數
2、具體用法看下面的例子:
(1)假設程序的名稱為program ,當執行程序時只輸入./program,則由操作系統傳來的參數為argc=1,表示只有程序名稱,argv[0]指向輸入的程序路徑及名稱。
(2)當執行程序時輸入./program -10,則由操作系統傳來的參數為argc=2,表示除了程序名外還有一個參數,其中argv[0]指向輸入的程序路徑及名稱,argv[1]=10;
(3)當執行程序時輸入./program -10,-a,則由操作系統傳來的參數為argc=3,表示除了程序名外還有一個參數,其中argv[0]指向輸入的程序路徑及名稱,argv[1]=10;argv[2]=a。
總結:int main(int argc, char *argv[] ) ,char *argv[] :argv 是一個指針數組,他的元素個數是argc,存放的是指向每一個參數的指針,他的第一個元素即argv[0]為編譯生成的可執行文件名(包括路徑eg:"/home/c/qt/test-build-desktop-Desktop_Qt_4_8_7_for_GCC__Qt_SDK__Release/test" 從二個元素(argv[1])開始,是每一個參數 int argc 表示argv的大小,是實際參數個數+1,其中+1是因為argv[0]是編譯后的可執行文件名。
以下提供一樣例程序EXAMPLE.EXE, 演示如何在main()函數中使用三個參數:
/*program name EXAMPLE.EXE*/
#include <stdio.h>
#include <stdlib.h>
main(int argc, char *argv[], char *env[])
{
int i;
printf("These are the %d command- line arguments passed to
main:/n/n", argc);
for(i=0; i<=argc; i++)
printf("argv[%d]:%s/n", i, argv);
printf("/nThe environment string(s)on this system are:/n/n");
for(i=0; env!=NULL; i++)
printf(" env[%d]:%s/n", i, env);
}
如果在DOS 提示符下, 按以下方式運行EXAMPLE.EXE:
./example first_argument "argument with blanks" 3 4 "last but
one" stop!
注意: 可以用雙引號括起內含空格的參數, 如本例中的: " argument
with blanks"和"Last but one")。
結果是這樣的:
The value of argc is 7
These are the 7 command-linearguments passed to main:
argv[0]:C:/TURBO/EXAMPLE.EXE
argv[1]:first_argument
argv[2]:argument with blanks
argv[3]:3
argv[4]:4
argv[5]:last but one
argv[6]:stop!
argv[7]:(NULL)
The environment string(s) on this system are:
env[0]: COMSPEC=C:/COMMAND.COM
env[1]: PROMPT=$P$G /*視具體設置而定*/
env[2]: PATH=C:/DOS;C:/TC /*視具體設置而定*/
參考:https://blog.csdn.net/desert187/article/details/40781225