HÀM main TRẢ VỀ GÌ?


int main(int argc, char *argv[])

int main (void)

public static void main(String [] args)

static void Main(string[] args)

def main():

Có lẽ bạn không lạ gì hàm main, hàm đầu tiên bạn viết khi học lập trình C, ngay cả khi chuyển sang một ngôn ngữ khác, nhất là các ngôn ngữ thừa kế từ C như C++, Java và C#, bạn cũng sẽ thấy một hàm tương tự. Đặc trưng của main là nó sẽ nhận vào các tham số (các tham số này được truyền cho chương trình đang chạy từ trên dòng lệnh) và trả về dữ liệu kiểu int hoặc void.

👉 Khi gọi một hàm (sqrt, rand, malloc…), bạn sẽ nhận được kết quả trả về của hàm đó, vậy giá trị trả về của hàm main sẽ trả về cho ai? Và để làm gì?👉 Vì khi main kết thúc cũng đồng nghĩa với chương trình kết thúc, nên bên trong chương trình bạn không có cách nào lấy giá trị đó (trừ khi bạn cố ý gọi main), mà giá trị này sẽ trả về cho hệ điều hành, hệ điều hành sẽ lưu lại và cho phép chương trình kế tiếp thực thi có thể đọc được. Nhờ khả năng chuyển kết quả thực thi của một chương trình cho một chương trình khác mà ta có thể viết được các chuỗi lệnh (hay các batch scripts, bash scripts…).

Hãy mở dòng lệnh Windows và thử một ví dụ sau:

dir ABC:: <ENTER>

echo %errorlevel%

Bạn sẽ thấy nó hiện số 1, bây giờ bạn gõ dir C:\ rồi gõ Enter, sau đó hiển thị lại biến %errorlevel% bằng lệnh echo, bạn sẽ thấy nó hiển thị giá trị 0. 0 và 1 chính là các giá trị trả về khác nhau từ hàm main (của lệnh dir).

Giờ ta thử thêm một chút nhé: Sau khi chạy lệnh dir xong, ta gõ tiếp lệnh sau:

if %errorlevel%==0 echo Lenh dir chay khong bi loi

Bây giờ câu thông báo “Lenh dir chay khong bi loi” sẽ chỉ hiển thị nếu bạn vừa dir một thư mục hợp lệ.

👉 Vậy tôi nên trả về giá trị như thế nào? Có một quy ước chung là khi chương trình kết thúc không có lỗi, ta trả về 0, đây cũng là giá trị trả về nếu bạn để kiểu trả về của main là void. Mỗi giá trị tăng dần 1, 2, 3, 4… sau đó sẽ đại diện cho một lỗi – cũng theo thứ tự nghiêm trọng tăng dần. Tất nhiên khi bạn đã quy định một mã lỗi, bạn cũng phải viết tài liệu mô tả nó để người dùng biết cách sử dụng.

👉 Ngoài errorlevel, các chương trình còn có thể giao tiếp được với nhau thông qua các kênh standard input/output, bằng cách dùng các ký hiệu như >, ,>>, |.Hãy đoán thử xem câu lệnh sau sẽ in ra gì nhé: tasklist | findstr “chrome.exe”

❓ Bạn thử nghĩ xem có biết bao nhiêu tiềm năng khi ta có thể kết nối các lệnh hoàn toàn riêng biệt với nhau?

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

%d bloggers like this: