我們常見的主函數如下所示:
//C 語言中的主函數
#include <stdio.h>
int main(int argc, char* argv[])
{
return 0;
}
//C++ 中的主函數
#include <iostream>
using namespace std;
int main(int argc, char* argv[])
{
return 0;
}
主函數也是一個函數,也能夠由外部的程式呼叫,其中argc和argv就是主函數的兩個引數。
1、argc 是 argument count 的縮寫,表示傳入main函數的引數個數;
2、argv 是 argument vector 的縮寫,表示傳入main函數的引數序列或指標,並且第一個引數argv[0]一定包含了程式所在完整路徑的名稱,所以確切的說需要我們輸入的main函數的引數個數應該是argc-1個,範例如下:
#include <iostream>
using namespace std;
void main(int argc, char* argv[])
{
//列印所有的引數
for (int i = 0; i < argc; i++)
cout << "argument[" << i << "] is: " << argv[i] << endl;
system("pause");
}
程式輸出:
使用os.system方法需要引入import os模組。(和C/C++中的System函數類似)
範例:
import os
# 一些常用的網路命令
os.system("ping www.baidu.com")
os.system("ipconfig")
我們以C++程式為例,先編寫一個加法函數,引數為a、b、c、d,返回a+b+c+d的值:
#include <iostream>
#include <string>
using namespace std;
//加法函數
int addNumber(int a, int b, int c, int d)
{
return a + b + c + d;
}
//主函數
void main(int argc, char* argv[])
{
int elem[4] = { 0 };//引數陣列
//將引數轉換為整數
//第0個引數為路徑+檔名,所以i從1開始
for (int i = 1; i < argc; i++)
//stoi為string中的函數,即string to int,將字串轉換為整數
elem[i - 1] = stoi(argv[i]);//將字串轉換為整數
cout<<"addNumber函數的輸出為:"<<addNumber(elem[0], elem[1], elem[2], elem[3]);
system("pause");
}
將上述的C++程式碼編譯執行,可能會報錯,因為argv沒有傳入引數,會報出陣列越界的錯誤,如下:
但是不會影響生成exe檔案,將生成的exe檔案和新建的python檔案放在同一目錄下(不放在同一路徑下時,需要寫絕對路徑+檔名),在Python檔案中寫入如下程式碼
import os
a = input('請輸入a:')
b = input('請輸入b:')
c = input('請輸入c:')
d = input('請輸入d:')
os.system("addNumber.exe" +" "+a+" "+b+" "+c+" "+d)
注意,引數之間一定要用空格隔開
最後的輸出如下: