Trường hợp 1:Tại sao không có lỗi khi chuyển đối số dòng lệnh khi khai báo chính là `int main (void)`?
void hello(void) {
//something
}
int main()
{
hello(1); //error
return 0;
}
Trường hợp 2:
int main(void) {
//something
return 0;
}
Thực hiện:
./a.out something something //No error, Why?
Tại sao không có lỗi? main
sẽ không thể thực hiện bất kỳ đối số nào. Vậy tại sao có thể cung cấp các đối số từ dòng lệnh?
Tại sao bạn lại gặp lỗi? –
@OliverCharlesworth Bởi vì chúng tôi đang chuyển đối số cho chính? trình biên dịch không đi vào hình ảnh nhưng tại thời gian chạy/loadtime tại sao không có lỗi? – JagsVG
Shell * luôn luôn * gửi các đối số của nó tới chương trình - ngay cả khi bạn không cung cấp (thường là nó gửi 'argv [0]'). 'main' không phải là cùng một loại hàm như' hello'. – usr2564301