Trả về giá trị bởi tham chiếu trong C++



Một chương trình C++ có thể được làm cho nó dễ dàng hơn để đọc và duy trì bởi sử dụng các tham chiếu thay vì sử dụng con trỏ. Một hàm C++ có thể trả về một tham chiếu theo cách tương tự như nó trả về một con trỏ.

Khi một hàm trả về một tham chiếu, nó trả về một con trỏ ẩn tới giá trị trả về của nó. Theo cách này, một hàm có thể được sử dụng ở phần trái của một lệnh gán. Bạn xét ví dụ sau:

#include <iostream>
#include <ctime>
 
using namespace std;
 
double mang[] = {5.6, 11.4, 43.1, 25.6, 20.2};
// phan dinh nghia ham 
double& tlGiaTri( int i )
{
  return mang[i];   // tra ve mot tham chieu toi phan tu thu i
}
 
// ham main de goi phan dinh nghia ham tren.
int main ()
{
 
   cout << "Gia tri truoc khi thay doi:" << endl;
   for ( int i = 0; i < 5; i++ )
   {
       cout << "mang[" << i << "] = ";
       cout << mang[i] << endl;
   }
 
   tlGiaTri(1) = 12.44; // thay doi phan tu thu 2
   tlGiaTri(3) = 25.0;  // thay doi phan tu thu 4
 
   cout << "Gia tri sau khi thay doi:" << endl;
   for ( int i = 0; i < 5; i++ )
   {
       cout << "mang[" << i << "] = ";
       cout << mang[i] << endl;
   }
   return 0;
}

Chạy chương trình C++ trên sẽ cho kết quả như hình sau:

Trả về giá trị bởi Tham chiếu trong C++

Khi trả về một tham chiếu, bạn nên cẩn thận rằng đối tượng đang được tham chiếu là không ra khỏi phạm vi. Vì thế, nó là không hợp lệ để trả về một tham chiếu tới biến cục bộ. Nhưng bạn có thể trả về một tham chiếu trên một biến tĩnh (static).

int& func() {
   int q;
   //! return q; // Lenh dang nay se cho mot Compile time error
   static int x;
   return x;     // An toan, x ben ngoai pham vi nay
}

Đã có app VietJack trên điện thoại, giải bài tập SGK, SBT Soạn văn, Văn mẫu, Thi online, Bài giảng....miễn phí. Tải ngay ứng dụng trên Android và iOS.

Theo dõi chúng tôi miễn phí trên mạng xã hội facebook và youtube:

Các bạn có thể mua thêm khóa học JAVA CORE ONLINE VÀ ỨNG DỤNG cực hay, giúp các bạn vượt qua các dự án trên trường và đi thực tập Java. Khóa học có giá chỉ 300K, nhằm ưu đãi, tạo điều kiện cho sinh viên cho thể mua khóa học.

Nội dung khóa học gồm 16 chuơng và 100 video cực hay, học trực tiếp tại https://www.udemy.com/tu-tin-di-lam-voi-kien-thuc-ve-java-core-toan-tap/ Bạn nào có nhu cầu mua, inbox trực tiếp a Tuyền, cựu sinh viên Bách Khoa K53, fb: https://www.facebook.com/tuyen.vietjack

Follow facebook cá nhân Nguyễn Thanh Tuyền https://www.facebook.com/tuyen.vietjack để tiếp tục theo dõi các loạt bài mới nhất về Java,C,C++,Javascript,HTML,Python,Database,Mobile.... mới nhất của chúng tôi.


tham_chieu_trong_cplusplus.jsp


Tài liệu giáo viên