Trang 1 trên tổng số 2 12 Cuối cùngCuối cùng
Từ 1 tới 10 trên tổng số 13 kết quả

Đề tài: Cách sử dụng hàm return() trong main()

  1. #1
    Ngày gia nhập
    02 2009
    Nơi ở
    Hà Nội_PTIT_cơ sở 1
    Bài viết
    15

    Angry Cách sử dụng hàm return() trong main()

    Chào các bạn, các bạn cho mình hỏi chút nhé. Sau đây là nguyên văn 1 đoạn chương trình trong một sách lập trình C:
    PHP Code:
    #include <stdio.h>
    #include <conio.h>
    main()
    {
    clrscr();
      
    long int Giai_Thua(int n);
      
    int n;
      
    printf("n=");
      
    scanf("%d", &n);
      
    printf("n! = %ld\n"Giai_Thua(n));
      return(
    0);
      
    getch();
    }
    long int Giai_Thua(int n
    {if(
    n==0) return(1);
     else return(
    n*Giai_Thua(n-1));

    Khi cho chạy bằng Turbo C++, mình ko thấy báo lỗi nhưng chỉ thấy hiển thị ở user screen như sau:
    n= (giả sử nhập vào 2, ấn "enter")
    rồi tự dưng màn hình tắt ngúm, bất chấp sự có mặt của lệnh
    PHP Code:
    gech() 
    . Mình không hiểu tại sao lệnh return() lại có tác dụng như vậy! Bạn nào có kinh nghiệm giải thích hộ mình với.
    PHP Code:
    Note 
    :Mình không bàn đến cách sửa lại chương trình mà chỉ muốn hiểu về tác dụng của lệnh return.(Muốn khắc phục chỉ cần bỏ lệnh return() trong hàm main() đi là xong ^^)
    Cám ơn các bạn nhiều!

  2. #2
    Ngày gia nhập
    09 2008
    Bài viết
    33

    **** Lệnh "return"

    - Lệnh return dùng để quay lại vị trí gọi hàm sau khi các lệnh trong hàm đó được thực thi xong. Trong lệnh return có thể có một giá trị gắn với nó, giá trị đó sẽ được trả về cho chương trình. Cú pháp tổng quát của cậu lệnh return như sau:

    Code: return biểu_thức

    - Biểu thức là một tùy chọn (không bắt buộc). Có thể có hơn một lệnh return được sử dụng trong một hàm. Tuy nhiên, hàm sẽ quay trở về vị trí gọi hàm khi gặp lệnh return đầu tiên.

    **** Một định nghĩa khác : Một hàm trả dòng điều khiển về nơi gọi nó bằng câu lệnh return. Khi lệnh return được theo sau bởi một biểu thức thì biểu thức đó sẽ được đánh giá và giá trị này sẽ được trả về cho nơi đã gọi hàm. Khi return được gọi mà không có biểu thức đi kèm thì giá trị trả về là không xác định.

    **** Cái code của bạn mình thấy có bị gì đâu vẫn chạy bình thường mà. Khi bạn dùng void main thì không cần return, vì void main là hàm không cần trả về giá trị. Còn hàm main là hàm trả về giá trị nên cần có return để code được rõ ràng, mặc dù có hay không return không quan trọng.

    Bạn có thể tham khảo thêm ở đây
    http://forums.congdongcviet.com/showthread.php?t=4057

  3. #3
    Ngày gia nhập
    07 2008
    Nơi ở
    /media/Anime
    Bài viết
    2,288

    Lệnh return mà đặt trong hàm main thì tương đương với thoát khỏi chương trình, do đó mấy lệnh phía sau nó là vô nghĩa.
    Càng yêu mèo thì mèo càng mập. Mèo càng mập ta lại càng yêu.

  4. #4
    Ngày gia nhập
    02 2009
    Nơi ở
    Hà Nội_PTIT_cơ sở 1
    Bài viết
    15

    Lệnh return(0) ở trong hàm main() kia. Giới hạn trong ngôn ngữ lập trình C mình nghĩ nó chỉ giúp hợp lý hóa, trả về cho hàm main() một giá trị kiểu int. Chẳng lẽ nó lại đóng vai trò kết thúc hàm luôn hay sao?
    Mà mình thấy trong hàm main() ở trên đâu có lời gọi hàm nào đâu, dòng đâu tiên:
    PHP Code:
    main() 
    là dòng khai báo hàm đấy chứ. Theo như bạn basilick ở trên thì lệnh return() giúp quay lại đâu vậy?
    Note: Mình dùng Turbo C++
    Đã được chỉnh sửa lần cuối bởi vuduykhanh : 28-02-2009 lúc 03:33 PM. Lý do: Thêm chi tiết

  5. #5
    Ngày gia nhập
    04 2007
    Bài viết
    134

    Lệnh return là kết thúc hàm và trả về giá trị. Kiến thức cơ bản, có gì đâu mà thắc mắc.
    Khai báo hàm main phải là
    void main(...)
    hoặc
    int main(...)
    PS : main() chắc là giống void main(...)

    Bạn mới học mà phát biểu giới hạn ngôn ngữ lập trình C như đúng rồi ấy nhỉ
    Đã được chỉnh sửa lần cuối bởi Lugia : 28-02-2009 lúc 02:16 PM.

  6. #6
    Ngày gia nhập
    11 2007
    Nơi ở
    Hà Nội
    Bài viết
    520

    Mặc định Cách sử dụng hàm return() trong main()

    Trích dẫn Nguyên bản được gửi bởi Lugia Xem bài viết
    Lệnh return là kết thúc hàm và trả về giá trị. Kiến thức cơ bản, có gì đâu mà thắc mắc.
    Khai báo hàm main phải là
    void main(...)
    hoặc
    int main(...)
    PS : main() chắc là giống void main(...)

    Bạn mới học mà phát biểu giới hạn ngôn ngữ lập trình C như đúng rồi ấy nhỉ
    khai báo là main() cũng không sai do trình biên dịch tự hiểu đó là hàm int main()
    @vuduykhanh:khi gặp lệnh return thì nghĩa là kết thúc hàm, đằng sau có lệnh gì thì cũng mặc. Giống như cái hàm
    Code:
    long int Giai_Thua(int n) 
    {if(n==0) return(1);
     else return(n*Giai_Thua(n-1));
    nếu bỏ else đi thì vẫn cho kết quả vì với n==0 hàm trả về 1 ngay mà không quan tâm các câu lệnh phía sau
    có 2 kiểu kết thúc 1 hàm
    +gặp lệnh return hàm nhận giá trị và kết thúc
    +gặp dấu } ở cuối hàm, nếu kiểu trả về là void thì không sao , nếu kiểu khác thì có lỗi

  7. #7
    Ngày gia nhập
    02 2009
    Nơi ở
    Hà Nội_PTIT_cơ sở 1
    Bài viết
    15

    Trích dẫn Nguyên bản được gửi bởi Lugia Xem bài viết
    Lệnh return là kết thúc hàm và trả về giá trị. Kiến thức cơ bản, có gì đâu mà thắc mắc.
    Khai báo hàm main phải là
    void main(...)
    hoặc
    int main(...)
    PS : main() chắc là giống void main(...)

    Bạn mới học mà phát biểu giới hạn ngôn ngữ lập trình C như đúng rồi ấy nhỉ
    Bạn Lugia nói vậy hơi quá rồi! Mình phát biểu "giới hạn ngôn ngữ lập trình C" là do đã đọc bài viết:
    http://forums.congdongcviet.com/showthread.php?t=4057
    trên diễn đàn rồi đó chứ! Theo như bài viết đó, việc dùng return() trong hàm main() ko chỉ đơn thuần kết thúc hàm và trả lại giá trị mà còn liên quan tới HĐH nữa. Bạn tìm hiểu kĩ đi rồi phán xét mình cũng chưa muộn!
    Đã được chỉnh sửa lần cuối bởi vuduykhanh : 28-02-2009 lúc 03:34 PM.

  8. #8
    Ngày gia nhập
    01 2009
    Nơi ở
    Hà Nội
    Bài viết
    205

    Theo mình thì 1 hàm kể cả hàm main() đi nữa thì điều mà nó quan tâm chính là giá trị của nó. Do đó nó sẽ thực hiện tất cả công việc cho đến khi nó nhận được giá trị của nó. Có nghĩa là khi thấy return() thì nó sẽ thoát luôn, không quan tâm đến công việc tiếp theo nữa vì "sứ mệnh" của nó đã xong.

    Thôi chúng ta không nên gấy mất đoàn kết nội bộ chỉ vì những vấn đề như thế này. Hồi mới vào diễn đàn mình cũng đã tranh cãi với nhiều người, thậm chí là nói đểu nhau nữa chỉ vì mình chưa hiểu biết, ngựa non háu đá. Còn bây giờ thì mình không muốn như vậy nữa.

    Nhân đây cũng xin sorry tất cả những ai đã cãi nhau với em trong vụ CALBK nhé!!!!

  9. #9
    Ngày gia nhập
    02 2009
    Nơi ở
    Hà Nội_PTIT_cơ sở 1
    Bài viết
    15

    Trích dẫn Nguyên bản được gửi bởi trubavuong Xem bài viết
    Theo mình thì 1 hàm kể cả hàm main() đi nữa thì điều mà nó quan tâm chính là giá trị của nó. Do đó nó sẽ thực hiện tất cả công việc cho đến khi nó nhận được giá trị của nó. Có nghĩa là khi thấy return() thì nó sẽ thoát luôn, không quan tâm đến công việc tiếp theo nữa vì "sứ mệnh" của nó đã xong.

    Thôi chúng ta không nên gấy mất đoàn kết nội bộ chỉ vì những vấn đề như thế này. Hồi mới vào diễn đàn mình cũng đã tranh cãi với nhiều người, thậm chí là nói đểu nhau nữa chỉ vì mình chưa hiểu biết, ngựa non háu đá. Còn bây giờ thì mình không muốn như vậy nữa.

    Nhân đây cũng xin sorry tất cả những ai đã cãi nhau với em trong vụ CALBK nhé!!!!
    "Anh" nói đúng, hồi nãy "em" hơi mất bình tĩnh, "ngựa non háu đá" mà! Sorry mọi người nhiều! Mong mọi người thông cảm!
    Đã được chỉnh sửa lần cuối bởi vuduykhanh : 28-02-2009 lúc 03:54 PM.

  10. #10
    Ngày gia nhập
    01 2009
    Nơi ở
    Hà Nội
    Bài viết
    205

    Anh gì mà anh, mình mới chỉ học năm thứ nhất thôi, có khi mình còn kém cả tuổi bạn đấy.

Các đề tài tương tự

  1. Sử dụng return 0 ở cuối hàm main() có ý nghĩa gì?
    Gửi bởi Kevin Hoang trong diễn đàn Thủ thuật, Tutorials và Mã nguồn C/C++/C++0x
    Trả lời: 28
    Bài viết cuối: 27-02-2015, 12:36 AM
  2. Lập trình C Hàm getch + int main + return
    Gửi bởi vietquangkid trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 4
    Bài viết cuối: 25-01-2013, 10:20 PM
  3. hàm main() báo lỗi không trả về giá trị return là do đâu?
    Gửi bởi ManOnStreet trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 5
    Bài viết cuối: 01-11-2012, 10:05 PM
  4. Lệnh return 0 trong hàm main để làm gì?
    Gửi bởi quockhanh.K94 trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 10
    Bài viết cuối: 05-09-2010, 08:31 PM
  5. Khi nào cần return 0, return 1 trong int main()
    Gửi bởi jojocolumbus trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 4
    Bài viết cuối: 22-06-2010, 10:23 AM

Quyền hạn của bạn

  • Bạn không thể gửi đề tài mới
  • Bạn không thể gửi bài trả lời
  • Bạn không thể gửi các đính kèm
  • Bạn không thể chỉnh sửa bài viết của bạn