Trong hướng dẫn trước, chúng ta đã thảo luận về nhiều khái niệm liên quan đến con trỏ trong ngôn ngữ lập trình C. Một trong những khái niệm chúng ta đã thảo luận là mảng con trỏ. Chúng ta đã sử dụng ví dụ về mảng con trỏ số nguyên để chứng minh khái niệm này.
Và đây là một chương trình nhỏ cho thấy cách sử dụng mảng này:
'arr' là địa chỉ của phần tử đầu tiên trong mảng này. Bây giờ, vì đây là một mảng các con trỏ, nên phần tử đầu tiên (và tất cả các phần tử khác, được truy cập bằng cách thêm 1 và 2 vào arr) không gì khác ngoài địa chỉ. Vì vậy, để truy cập giá trị được lưu giữ tại địa chỉ đó, chúng ta sử dụng toán tử *.
Sau đây là đầu ra của chương trình này:
Vậy đây là cách bạn truy cập các giá trị từ một mảng các con trỏ ký tự. Bây giờ, bạn hẳn đang nghĩ tại sao chúng ta lại thảo luận về tất cả những điều này?
Vâng, chúng ta đã làm như vậy vì điều này đưa chúng ta đến một khái niệm quan trọng khác, đó là khả năng truy cập các đối số dòng lệnh trong các môi trường hỗ trợ ngôn ngữ lập trình C. Hãy cùng thảo luận chi tiết về điều này.
Như bạn đã biết, 'main' là hàm đầu tiên trong chương trình của bạn được gọi khi chương trình được thực thi. Hàm này được gọi bằng hai đối số: argc và argv. Trong khi phần trước cho bạn biết về số lượng đối số dòng lệnh, phần sau thực sự là một mảng các con trỏ đến chính các đối số.
Xin lưu ý rằng tên của chính chương trình được truyền dưới dạng đối số cho hàm main. Vì vậy, vì lý do này, số lượng đối số - được biểu thị bằng argc - nhiều hơn một so với số lượng đối số thực tế được truyền cho chương trình. Sau đây là một ví dụ:
Bây giờ, chúng ta đã chạy chương trình này - được gọi là a.out và hiển thị trong thư mục 'home' của hệ thống - mà không có bất kỳ đối số nào. Và đây là kết quả đầu ra:
Vì vậy, bạn có thể thấy tên thực thi của chương trình đã được truyền dưới dạng đối số. Nếu tôi sử dụng lệnh sau:
Trong trường hợp đó, argc sẽ là 3 và argv sẽ chứa địa chỉ của các chuỗi '/home/a.out', 'htf' và 'ff'.
Sau đây là một cách tốt hơn để viết chương trình in đối số:
Cách truy cập các đối số dòng lệnh trong chương trình C
Nhưng như đã đề cập trong hướng dẫn đó, một mảng con trỏ có thể có nhiều kiểu khác nhau. Ví dụ, đây là một mảng các con trỏ ký tự:
Mã:
char *arr[] = {"HowtoForge", "FaqForge", "Linux"};
Mã:
#include
int main()
{
char *arr[] = {"HowtoForge", "FaqForge", "Linux"};
printf("\n %s", *arr);
printf("\n %s", *(arr+1));
printf("\n %s", *(arr+2));
return 0;
}
Sau đây là đầu ra của chương trình này:
Mã:
HowtoForge
FaqForge
Linux
Vâng, chúng ta đã làm như vậy vì điều này đưa chúng ta đến một khái niệm quan trọng khác, đó là khả năng truy cập các đối số dòng lệnh trong các môi trường hỗ trợ ngôn ngữ lập trình C. Hãy cùng thảo luận chi tiết về điều này.
Như bạn đã biết, 'main' là hàm đầu tiên trong chương trình của bạn được gọi khi chương trình được thực thi. Hàm này được gọi bằng hai đối số: argc và argv. Trong khi phần trước cho bạn biết về số lượng đối số dòng lệnh, phần sau thực sự là một mảng các con trỏ đến chính các đối số.
Xin lưu ý rằng tên của chính chương trình được truyền dưới dạng đối số cho hàm main. Vì vậy, vì lý do này, số lượng đối số - được biểu thị bằng argc - nhiều hơn một so với số lượng đối số thực tế được truyền cho chương trình. Sau đây là một ví dụ:
Mã:
#include
int main(int argc, char *argv[])
{
printf("\n %d", argc);
printf("\n %s", *argv);
return 0;
}
Mã:
1
/home/a.out
Mã:
/home/a.out htf ff
Sau đây là một cách tốt hơn để viết chương trình in đối số:
Mã:
#include
int main(int argc, char *argv[])
{
for(int i=0; i