Từ 1 tới 4 trên tổng số 4 kết quả

Đề tài: Cách thức làm việc của hàm hoán vị trong C?

  1. #1
    Ngày gia nhập
    09 2010
    Bài viết
    1

    Mặc định Cách thức làm việc của hàm hoán vị trong C?

    em có đọc một số bài viết dùng hàm hoán vị, em thường thấy là khai báo tham số là pointer -> trong phần gọi hàm thì tham số thực là địa chỉ, cái này em hiểu
    nhưng hôm nay đọc hàm hoán vị lại thấy khai báo tham số như sau:
    PHP Code:
    void HoanVi (int &aint &b//chỗ này khai báo thế này là như thế nào?

     
    int tam a
     
    b
     
    tam

     
    void SapTang (int a[], int n

     for (
    int i 0n-i++) 
      for (
    int j i+1nj++) 
       if (
    a[i] > [j]) 
        
    HoanVi (a[i], a[j]); //em không hiểu chỗ này!

    khi gọi hàm thì tham số thực lại là giá trị của biến chứ không phải địa chỉ của biến. Các anh giải thích rõ hộ em. Thanks

  2. #2
    Ngày gia nhập
    04 2010
    Bài viết
    1,534

    Code trên không phải là code C. Đó là code C++

    Đi tìm hiểu về tham chiếu trong hàm. Trong diễn đàn này cũng có nhiều bài nói về vấn đề này rồi.

  3. #3
    Ngày gia nhập
    04 2011
    Nơi ở
    Heaven
    Bài viết
    90

    khi thực hiện hàm hoán vị, điều ta mong muốn khi ra khỏi hàm là vị trí của 2 số đổi chỗ cho nhau, khi trong hàm thực hiện làm thay đổi biến, muốn giá trị của biến ra khỏi hàm thay đổi thì phải truyền tham chiếu đến biến, truyền tham chiếu là làm việc trực tiếp trên vùng nhớ của biến không tạo ra một bản sao chép của biến do đó kết quả do hàm thực hiện trên biến thay đổi trực tiếp trên biến.
    I'll come back

  4. #4
    Ngày gia nhập
    01 2011
    Nơi ở
    -Mountain-
    Bài viết
    768

    Trích dẫn Nguyên bản được gửi bởi shownot Xem bài viết
    em có đọc một số bài viết dùng hàm hoán vị, em thường thấy là khai báo tham số là pointer -> trong phần gọi hàm thì tham số thực là địa chỉ, cái này em hiểu
    nhưng hôm nay đọc hàm hoán vị lại thấy khai báo tham số như sau:
    PHP Code:
    void HoanVi (int &aint &b//chỗ này khai báo thế này là như thế nào?

     
    int tam a
     
    b
     
    tam

     
    void SapTang (int a[], int n

     for (
    int i 0n-i++) 
      for (
    int j i+1nj++) 
       if (
    a[i] > [j]) 
        
    HoanVi (a[i], a[j]); //em không hiểu chỗ này!

    khi gọi hàm thì tham số thực lại là giá trị của biến chứ không phải địa chỉ của biến. Các anh giải thích rõ hộ em. Thanks

    Đây là sử dụng C++ rồi chứ ko phải là C bạn à. Trong C như bạn thấy đó là con trỏ còn ở đây là biến tham chiếu (bí danh)
    Hướng dẫn C++: https://www.youtube.com/watch?v=BwLodoQdoY4&list=PL1c9Uxlo-mplJDRGdONNupgo5OCBTyGGn

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