Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

ความหมายของ int argc, char *argv[] ใน C++

argc ย่อมาจาก argument count (จำนวนอาร์กิวเมนต์)
argv ย่อมาจาก argument values (ค่าอาร์กิวเมนต์ - อาร์เรย์ของสตริง)

เป็นตัวแปรที่ส่งให้ฟังก์ชัน main เมื่อเริ่มทำงาน เมื่อรันโปรแกรมสามารถส่งอาร์กิวเมนต์ได้ เช่น:

$ ./a.out hello

hello คืออาร์กิวเมนต์ สามารถเข้าถึงในโปรแกรมได้

โค้ดตัวอย่าง

#include <iostream>
using namespace std;

int main(int argc, char** argv) {
    cout << "This program has " << argc << " arguments:" << endl;
    for (int i = 0; i < argc; ++i) {
        cout << "argv[" << i << "] = " << argv[i] << endl;
    }
    return 0;
}

การคอมไพล์และรัน

$ g++ main.cpp -o myprog
$ ./myprog hello people

ผลลัพธ์

This program has 3 arguments:
argv[0] = ./myprog
argv[1] = hello
argv[2] = people

รายละเอียด:

  • argv[0] คือชื่อโปรแกรม (อาจเป็น path เต็ม ขึ้นกับ OS/shell)
  • argv[1] ... argv[argc-1] คืออาร์กิวเมนต์ที่ผู้ใช้ส่งมา
  • argv[argc] รับประกันว่าเป็น nullptr (C++ standard)
  • argc มากกว่าหรือเท่ากับ 1 เสมอ (อย่างน้อยมี program name)

รูปแบบอื่นของ main

int main(int argc, char *argv[])   // เทียบเท่ากับ char**
int main()                         // ไม่รับอาร์กิวเมนต์
// C++ ไม่อนุญาต main แบบอื่น (ไม่เหมือน C)

การใช้งานจริง: ใช้กับ command-line tools, parsing flags (-h, --version), กำหนดค่า config, รับไฟล์ input/output