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

Đề tài: Hỏi về sự khác nhau về tham biến và tham trị trong C

  1. #1
    Ngày gia nhập
    12 2009
    Bài viết
    4

    Mặc định Hỏi về sự khác nhau về tham biến và tham trị trong C

    em có cái hàm như thế này nhưng em hong hiểu rỏ mấy về tham biến và tham trị, chỉ biết nó khác nhau về dấu &.Mong anh em chỉ giáo
    #include <stdio.h>
    #include <conio.h>

    void thambien();
    void thamtri();

    void thambien(int &itham,int &ibien)
    {
    itham+=1;
    ibien+=1;
    }
    void thamtri(int tham,int bien)
    {
    tham+=1;
    bien+=1;
    }
    void main()
    {
    int ia=5,ib=5;
    thamtri(ia,ib);
    printf("a=%d,b=%d\n",ia,ib);
    thambien(ia,ib);
    printf("a=%d,b=%d\n",ia,ib);
    }

    Kết quả in ra màng hình:
    a=5,b=5 ==> thằng này sao nó không cộng thêm 1 nhỉ?
    a=6,b=6 ==> thằng này lại được cộng thêm 1

  2. #2
    Ngày gia nhập
    10 2011
    Bài viết
    552

    Lưu ý là trong C ko có kiểu
    void thambien(int &itham,int &ibien)
    Lên C++ mới có .
    "Tham biến" ở C phải dc truyền = con trỏ
    __
    Còn về tham biến thì cứ hiểu là : Khi truyền vào thì xem như nó làm việc trên chính cái dc truyền vào -> và tất nhiên có thay đổi gì thì cũng thay đổi lên chính thứ dc truyền vào
    Còn về tham trị : Khi truyền vào, nó sẽ sao ra 1 bản và làm việc trên bản sao đó. Khi out hàm thì bản sao byebye . bản chính vẫn y nguyên
    __
    Cho mình hỏi là chính xác thì bạn đang học C hay C++ ?
    Um Mani Padme Hum...!!

  3. #3
    Ngày gia nhập
    11 2011
    Nơi ở
    /home/tancuong
    Bài viết
    32

    Điều đầu tiên: bạn phải lưu ý là dấu & đó khi khai báo chung với kiểu dữ liệu(KDL) ví dụ: int& a thì kiểu int& là kiểu tham chiếu còn biến a là biến tham chiếu . Kiểu tham chiếu chỉ có trong C++ chứ không có trong C.

    Thứ hai: các tham biến trong C++ khi khai báo cần được khởi tạo ví dụ
    C++ Code:
    1. #include <iostream>
    2. using namespace std;
    3. int main (void)
    4. {
    5.      int a = 10; // khai báo biến a và khởi tạo bằng 10
    6.      int &r = a; // biến tham chiếu r được gán bằng a thì r sẽ tham chiếu đến ...
    7.      // ... hay nói cách khác r là 1 bí danh của a, mọi thay đổi trên r sẽ làm a thay đổi...
    8.      // ... nó giống với việc tham chiếu ngược trên con trỏ.
    9.      cout<<"r="<<r<<endl;
    10.      cout<<"a="<<a<<endl;
    11.      r++; << thay đổi giá trị của r thì a sẽ thay đổi theo
    12.      cout<<"r="<<r<<endl;
    13.      cout<<"a="<<a<<endl;
    14.      // nếu sau này khi gán r một biến khác ví dụ r = b; thì chỉ có giá trị của b được gán vào r chứ
    15.     // r không tham chiếu đến b.
    16.      return 0;
    17. }

    Thứ 3: Việc tham biến
    Khi bạn khai báo hàm voi thambien() với prototype

    C++ Code:
    1. void thambien(int &itham,int &ibien)

    thì hai biến itham va ibien là hai biến tham chiếu có kiểu int& nên mọi thay đổi itham va ibien trong hàm như sau:

    C Code:
    1. void thambien(int &itham,int &ibien)
    2. {
    3.     itham+=1;
    4.     ibien+=1;
    5. }
    cũng đồng nghĩa với việc thay đổi giá trị của ia và ib trong main():
    C Code:
    1. void main()
    2. {
    3.    int ia=5,ib=5;
    4.    thamtri(ia,ib);
    5.    printf("a=%d,b=%d\n",ia,ib);
    6.    thambien(ia,ib); // ở đây
    7.    printf("a=%d,b=%d\n",ia,ib);
    8. }

  4. #4
    Ngày gia nhập
    12 2009
    Bài viết
    4

    mình đang học c , bai này là bài c

  5. #5
    Ngày gia nhập
    01 2012
    Bài viết
    24

    C89 vs C99 không có tham chiếu
    Tuesday 03 January 2012
    Battery Level, 69%

  6. #6
    Ngày gia nhập
    08 2010
    Nơi ở
    Moscow, Russia Federation
    Bài viết
    913

    Mặc định Hỏi về sự khác nhau về tham biến và tham trị trong C

    Tham trị tức là làm việc với giá trị của biến
    Tham chiếu là làm việc với địa chỉ của biến, tức là làm việc trên vùng nhớ mà biến quản lý
    Mời các bạn ghé thăm blog cá nhân của tôi

  7. #7
    Ngày gia nhập
    12 2009
    Bài viết
    4

    thank all you ^-^!

  8. #8
    Ngày gia nhập
    01 2012
    Bài viết
    6

    Red face Biến và con trỏ

    Trích dẫn Nguyên bản được gửi bởi anhut Xem bài viết
    em có cái hàm như thế này nhưng em hong hiểu rỏ mấy về tham biến và tham trị, chỉ biết nó khác nhau về dấu &.Mong anh em chỉ giáo
    #include <stdio.h>
    #include <conio.h>

    void thambien();
    void thamtri();

    void thambien(int &itham,int &ibien)
    {
    itham+=1;
    ibien+=1;
    }
    void thamtri(int tham,int bien)
    {
    tham+=1;
    bien+=1;
    }
    void main()
    {
    int ia=5,ib=5;
    thamtri(ia,ib);
    printf("a=%d,b=%d\n",ia,ib);
    thambien(ia,ib);
    printf("a=%d,b=%d\n",ia,ib);
    }

    Kết quả in ra màng hình:
    a=5,b=5 ==> thằng này sao nó không cộng thêm 1 nhỉ?
    a=6,b=6 ==> thằng này lại được cộng thêm 1
    tham biến: (toán tử &) khi bạn sử dụng thì nó sẽ cập nhật giá trị mới thay cho giá trị hiện tại nó đang giữ.
    tham tri: vẫn giữ nguyên giá trị hiện tại của nó, ko cập nhật dc giá trị mới đâu nhé !

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

  1. tham trị & tham biến trong C/C++ khác nhau như thế nào?
    Gửi bởi rocktea trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 9
    Bài viết cuối: 28-04-2016, 11:14 AM
  2. Tham số, tham trị, tham biến. Ý nghĩa như thế nào trong lập trình C?
    Gửi bởi toend2008 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: 28-08-2014, 10:24 AM
  3. Bài tập C++ Sử dụng tham trị và tham biến khi thao tác trên mảng có khác nhau?
    Gửi bởi 5fox trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 7
    Bài viết cuối: 21-12-2011, 08:21 PM
  4. Kỹ thuật C++ Sử dụng tham biến, tham trị trong con trỏ có khác nhau không?
    Gửi bởi l4ngtu191 trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 13
    Bài viết cuối: 27-04-2011, 10:01 PM
  5. cho hỏi về cách dùng Tham biến và tham trị trong C++
    Gửi bởi dta4c trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 2
    Bài viết cuối: 12-01-2008, 10:18 PM

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