25/05/2018, 13:33

Hàm trả về các tham chiếu

Hàm có thể có kiểu tham chiếu và trả về giá trị tham chiếu. Khi đó có thể dùng hàm để truy nhập đến một biến hoặc một phần tử mảng nào đó. Dưới đây là một số ví dụ. Trình bầy một hàm trả về một tham chiếu đến một biến toàn bộ. Do đó có thể ...

Hàm có thể có kiểu tham chiếu và trả về giá trị tham chiếu. Khi đó có thể dùng hàm để truy nhập đến một biến hoặc một phần tử mảng nào đó. Dưới đây là một số ví dụ.

Trình bầy một hàm trả về một tham chiếu đến một biến toàn bộ. Do đó có thể dùng hàm để truy nhập đến biến này.

#include <iostream.h>

#include <conio.h>

int z ;

int &f() // Hàm trả về một bí danh của biến toàn bộ z

{

return z;

}

void main(void)

{

f()=50; // z = 50 

cout <<"
z= " << z;

getch();

}

Trình bầy một hàm trả về bí danh của một biến cấu trúc toàn bộ. Khác với ví dụ trên, ở đây không dùng hàm một cách trực tiếp mà gán hàm cho một biến tham chiếu, sau đó dùng biến tham chiếu này để truy nhập đến biến cấu trúc toàn bộ.

#include <iostream.h>

#include <conio.h>

struct TS

{

char ht[25];

float t,l,h,td;

};

TS ts;

TS &f()

{

return ts;

}

void main()

{

TS &h=f(); // h tham chiếu đến biến ts

cout << "
 Ho ten: " ;

cin.get(h.ht,25) ;

cout << "Cac diem toan, ly, hoa: ";

cin >> h.t >> h.l >> h.h ;

h.td = h.t + h.l + h.h ;

cout << "
 Ho ten: " << ts.ht;

cout << "
 Tong diem: " << ts.td;

getch();

}

Trình bầy một hàm trả về bí danh của một phần tử mảng cấu toàn bộ.

Hàm sẽ kiểm tra xem chỉ số mảng có vượt ra ngoài miền quy định hay không. Sau đó dùng hàm này để truy nhập đến các phần tử mảng cấu trúc.

#include <iostream.h>

#include <conio.h>

#include <stdlib.h>

struct TS

{

char ht[25];

float t,l,h,td;

};

TS *ts;

void cap_phat_bo_nho_nhapsl(int n)

{

ts = new TS[n+1] ;

if (ts==NULL)

{

cout << "Loi cap phat bo nho " ;

exit(1);

}

for (int i=1;i<=n;++i)

{

TS &h=ts[i];

cout << "
Thi sinh thu " << i ;

cout << "
 Ho ten: " ;

cin.ignore(1);

cin.get(h.ht,25) ;

cout << "Cac diem toan, ly, hoa: ";

cin >> h.t >> h.l >> h.h ;

h.td = h.t + h.l + h.h ;

}

}

TS &f(int i, int n) // Cho bi danh ts[i]

{

if (i<1 || i>n)

{

cout << "Chi so mang khong hop le " ;

exit(1);

}

return ts[i];

}

void main()

{

int n, i ;

cout << "
 So thi sinh : " ;

cin >> n;

cap_phat_bo_nho_nhapsl(n);

while (1)

{

cout << "
Can xem thi sinh thu may: " ;

cout << "
Chon so tu 1 den " << n << " (bam sai ket thuc CT) ";

cin >> i;

TS &h=f(i,n);

cout << "
 Ho ten: " << h.ht;

cout << "
 Tong diem: " << h.td;

}

}
0