Tham trị hay tham biến

Cho hỏi các hàm con là tham trị hay tham biên ạ.

#include <iomanip>
#include <iostream>
using namespace std;
const int KTM = 10;

void nhapmang(int b[], int &);
void xuatmang(int b[], int);

void main()
{
	int a[KTM],n;
	nhapmang(a,n);
	xuatmang(a,n);
	system("pause");
}
void nhapmang(int b[], int &m)
{
	int i;
	do{
		cout<<"\nNhap so phan tu mang";
		cin>>m;
	}while (m <= 0 || m > KTM);
	cout<<"\nNhap gia tri cho mang:";
	for(i = 0; i < m; i++)
	{
		cout<<"\nNhap phan tu thu :"<<i<<":";
		cin>>b[i];
	}
}

void xuatmang(int b[], int m)
{
	cout<<"\nMang la";
	for(int i = 0; i < m; i++)
		cout<<b[i]<<setw(3);
}
//a/Nhập vào số lượng phần tử mảng, sau đó nhập và xuất ra giá trị phần tử mảng
//b/
//c/Khai báo ra cái hàm nhập và xuất mảng
//d/Không, vì giới hạn phần tử mảng là 10

Hình như tham trị với tham biến nó là một mà phải không ta???

là 1 thì tui hỏi làm gì =))

Theo trí nhớ của mình là một mà ta? :open_mouth:

Trong BT người ta hỏi vậy nên chắc chắn nó khác nhau

Mình nhớ tham biến với tham trị là một. Giá trị cho vào hàm hoặc thủ tục không bị thay đổi. Pass by Value
Còn tham chiếu là giá trị bị thay đổi Pass by Reference
Còn trong đoạn code của bạn thì là Pass by Reference. Có nghĩa là giá trị biến m sẽ bị thay đổi trong hàm nhapmang. Còn hàm xuatmang thì là Pass by Value. Giá trị m sẽ không bị tác động

1 Like
Câu hỏi chưa rõ ràng, có tới hai chương trình con mà :) 

Tham trị / tham chiếu giá trị
Tham biến / tham chiếu biến / tham chiếu địa chỉ

Chương trình có 3 hàm cùng cấp: main(), nhapmang(), xuatmang(). Thế hàm nào là hàm con? Mà thực ra thì mình cũng không biết hàm thế nào gọi là “hàm con”, chỉ biết khái niệm “chương trình con” trong Pascal và “hàm” hoặc “phương thức” trong lập trình hướng đối tượng.

-Hàm main() không có tham số
-Hàm nhapmang(), cả 2 tham số đều là tham biến (C++ theo như mình biết thì không có truyền mảng tham trị)
-Hàm xuatmang(), tham số m là tham trị.

1 Like

đề bài trong giáo trình hỏi vậy nên tui cũng chiụ, câu hoỉ nè “KHAI BÁO THAM SỐ HÌNH THỨC TRONG CÁC HÀM CON LÀ THAM TRỊ HAY THAM BIẾN”

hàm nhập mảng: tham chiếu
hàm xuất mảng: tham trị

ok tks ,tham chiếu còn gọi là ham biến hả

1 Like

Từ “reference” trong “pass by reference” có thể không phải là cái reference của ngôn ngữ đó, vì nó là khái niệm độc lập với ngôn ngữ.

Nói về C++ để pass by reference thì đúng là dùng reference, nhưng mà “pass by reference” là “tham biến” chứ không phải “tham chiếu”.

1 Like

Theo mình thì bạn nên phân biệt thế này:

  1. Truyền tham trị (C/C++)
  2. Truyền tham biến: Có hai kiểu
    2.1. Truyền Con trỏ (C/C++)
    2.2. Truyền Tham chiếu (C++)

Code tham khảo bạn xem ở đây.

Hàm nhapmang() của bạn với &m là tham chiếu (chỉ dùng trong C++)

yes, of course
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?