Khi truyền vào 1 hàm
vd: ham(int &a) và ham(int *a) thì nó khác nhau thế nào mọi người,ý nghĩa của mỗi cách truyền là sao ạ
Tham số truyền vào ham(int &a) và ham(int *a) khác nhau thế nào
Sao bạn cứ hay quên đặt category cho topic của bạn thế nhỉ :v còn tái phạm là ăn nhé.
int &a
--> tham biến a, là kiểu int
int *a
--> xem cmt anh Đạt, mình không biết gì về nó hết.
Thớt xác định rõ ràng là đang học C hay C++. C không có tham chiếu đâu.
là gì ạ,em ko hiểu lắm
đang học c++ anh ơi
…
ý mình muốn hỏi là khi truyên vào hàm nó có ý nghĩa gì cơ ,chứ ko phải khai báo
Lần sau: Đừng để daynhauhoc.com theo vết xe đổ của ddth.com
Category ngay chỗ ghi “Uncategorized” ấy.
int& a là tham chiếu.
int* a là con trỏ.
Tham chiếu thì là hàng xịn của C++, như tên, nó tham chiếu tới chỗ có dữ liệu thật sự.
Thao tác với nó bt, gán hoặc lấy dữ liệu, và nhờ nó ta truy cập gián tiếp tới dữ liệu thật sự (ở mức trừu tượng của C++ nhé, biên dịch rồi thì ko nói).
Con trỏ thì phải làm phép khử tham chiếu, như thế này: *a
Để đến được dữ liệu thật sự.
Truyền tham số kiểu này nôm na là truyền con đường dẫn đến dữ liệu, chứ không phải truyền bản sao của dữ liệu.
2 cái này nếu type đơn giản (như int) thì thường sẽ được biên dịch ra mã máy y hệt nhau.
chưa hiêu chỗ này a ơi
Trực tiếp:
int a = 0;
a = 2;
Gián tiếp bằng tham chiếu:
int a = 0;
int& b = a;
b = 2; // a == 2
Gián tiếp bằng con trỏ:
int a = 0;
int* b = &a;
*b = 2; // a == 2
em đang hỏi truyên vào hàm anh ạ
truyên vào hàm nó có gi khác ko ạ ,hay ý ngĩa cũng giống như khai báo chỗ vd đó a
Truyền tham số vào hàm số thì nó cũng gần gần như vậy thôi.
thấy vd anh đưa ra về truyền tham chiếu nó chẳng có ý nghĩa gì to lắm ,thế truyên trưc tiêp cho nhanh
Sau này bạn truyền cả một class object vào là mệt đấy nhé. Phải học cách truyền gián tiếp.
Với lại bạn muốn thay đổi biến số nhưng code quá phức tạp, phải cắt ra hàm số riêng, thế thì phải truyền như & hoặc * để thay đổi nó.
Ai bảo không có ý nghĩa gì.
int a[100];
void InputArray(int &n) { // không có &n thì bạn định làm gì?
cin >> n;
// code
cout << n << endl;
}
int main() {
int n;
InputArray(n);
cout << "Giá trị nhảm nhí của n là " << n << endl;
}
Chuẩn. Dạo này code Python (không OOP), không thể truyền tham chiếu vào hàm được, code tù quá. Chắc sau mình phải chuyển code sang OOP.
Chào vinhthang!
bạn chạy 3 hàm này rồi sẽ hiểu!
1.
void hoanvi1(int a, int b){
int tmp = a;
a = b;
b =tmp;
}
void hoanvi2(int &a, int &b){
int tmp = a;
a =b;
b =tmp;
}
void hoanvi3(int* a, int* b){
int tmp = *a;
*a = *b;
*b = tmp;
}
chao Nghĩa
có cần nhập giá trị a vs b ko ạ
Cú pháp đơn giản này, không trỏ lung tung được này, …
Còn nếu truyền trực tiếp (tham trị) thì chắc chỉ có vác biến toàn cục đi muôn nơi.
Chào vinhthang!
Mong bạn đọc kỹ các dòng code trên và phân tích đầu vào và đầu ra! Cảm ơn bạn!