Kembalikan Rujukan dalam C++

Kembalikan Rujukan Dalam C



C++ menyediakan kemudahan untuk mengembalikan nilai atau alamat melalui rujukannya dan bukannya penunjuk. Menggunakan rujukan dan bukannya penunjuk boleh menjadikan program C++ lebih mudah untuk dibaca dan diurus. Dalam C++, rujukan dan penunjuk berkait rapat antara satu sama lain. Perbezaan utama ialah walaupun rujukan hanyalah nama ganti, 'alias' untuk pembolehubah lain, penunjuk boleh digunakan dalam operasi seperti menambah nilai. Rujukan ialah nama ganti atau pendua nilai asal dan dilambangkan dengan simbol “&”.

Contoh 1:

Kami mengimport fail pengepala 'iostream' dan kemudian menggunakan ruang nama 'std'. Fail pengepala diimport dalam kod C++ kerana banyak fungsi ditakrifkan. Kemudian, kami mencipta fungsi rujukan pulangan dengan meletakkan simbol '&' dengan nama fungsi itu, 'returnTheValue'.







Di sini, rujukan 'nilai' kini dimasukkan. Di bawah ini, kami mencetak nilai dan alamat dengan rujukan '&nilai'. Kemudian, kami meletakkan rujukan pulangan dan meletakkan 'nilai'. Sekarang, 'utama()' digunakan di sini, dan kami memulakan 'n1' dengan nilai '44'. Di bawah ini, 'int& n2' dimulakan dengan 'returnTheValue(n1)'. Sekarang, kami mencetak nilai 'n1' serta alamatnya. Kemudian, kami mencetak nilai 'n2' serta alamat 'n2' dengan menggunakan 'cout'.



Kod 1:



#include
menggunakan ruang nama std;
int & returnTheValue ( int & nilai )
{
cout << 'Nilai = ' << nilai << endl
<< 'Alamat nilai ialah'
<< & nilai << endl;
kembali nilai;
}
int utama ( )
{
anda n1 = 44 ;
int & n2 = returnTheValue ( n1 ) ;
cout << 'n1 = ' << n1 << endl
<< 'Alamat n1 ialah'
<< & n1 << endl;
cout << 'n2 = ' << n2 << endl
<< 'Alamat n2 ialah'
<< & n2 << endl;
kembali 0 ;
}


Pengeluaran:





Di sini, kita boleh ambil perhatian bahawa rujukan hanyalah nama ganti bagi pembolehubah lain seperti yang ditunjukkan dalam yang berikut. Sebagai alamat nilai, 'n1' dan 'n2' tidak pernah berubah.



Contoh 2:

Kami menggunakan ruang nama 'std' selepas mengimport fail pengepala 'iostream'. Seterusnya, kami menggunakan nama fungsi 'MyReturnValueFunc' dan simbol '&' untuk membina fungsi rujukan pulangan. Rujukan kepada pembolehubah 'v1' diletakkan di sini. Kami mencetak nilai dan alamat dengan rujukan '&v1' di bawah ini. Seterusnya, kami memasukkan 'rujukan pulangan' dengan menggunakan 'pulangan' dan 'v1' di lokasi ini. Di sini, 'main()' dipanggil, dan 'num_1' dimulakan dengan nilai '19'. Permulaan 'int& num_2' dilakukan dengan 'MyReturnValueFunc(num_1)'.

Pada masa ini, kami mencetak nilai dan alamat 'num_1' dan, menggunakan 'cout', kami mencetak nilai dan alamat 'num_2'. Kami kini menukar nilai 'num_1' dengan menggunakan alamat yang dikembalikan di sini oleh 'MyReturnValueFunc'. Fungsi ini mengembalikan nama ganti 'v1' yang juga nama ganti 'num_1'. Jadi, kami menukar nilainya dan menetapkannya kepada '91'. Kami menetapkan '91' kepada 'MyReturnValueFunc(num_1)' yang bertindak sebagai alias di sini. Kemudian, kami mencetak nilai sekali lagi dan alamat 'num_1'.

Kod 2:

#include
menggunakan ruang nama std;
int & MyReturnValueFunc ( int & v1 )
{
cout << 'Nilai v1 = ' << v1 << endl
<< 'Alamat pembolehubah v1 ialah '
<< & v1 << endl;
kembali v1;
}
int utama ( )
{
int num_1 = 19 ;
int & num_2 = MyReturnValueFunc ( num_1 ) ;
cout << 'Nilai num_1 = ' << num_1 << endl
<< 'Alamat num_1 ialah '
<< & num_1 << endl;
cout << 'Nilai num_2 = ' << num_2 << endl
<< 'Alamat num_2 ialah '
<< & num_2 << endl;
MyReturnValueFunc ( num_1 ) = 91 ;
cout << 'Sekarang, nilai num_1 = ' << num_1 << endl
<< 'Alamat num_1 ialah '
<< & num_1 << endl;
kembali 0 ;
}


Pengeluaran:

Seperti yang ditunjukkan dalam perkara berikut, kita dapat melihat bahawa rujukan hanyalah nama alternatif untuk pembolehubah lain kerana alamat nilai 'v1', 'num_1', ​​dan 'num_2' kekal malar:

Contoh 3:

Fail pengepala 'iostream' diimport dan ruang nama 'std' digunakan. Memandangkan banyak fungsi ditentukan dalam fail pengepala, kami mengimportnya ke dalam kod C++. Di sini, kami mencipta fungsi 'ReturnRefFun()' di mana kami meletakkan 'int& my_ref' yang mengembalikan rujukan. “int& ReturnRefFun” diisytiharkan di sini sebagai fungsi rujukan. Selepas ini, kami menambah nilai pembolehubah 'my_ref'. Di bawah ini, kami meletakkan 'return' yang mengembalikan rujukan 'my_ref'.

Selepas ini, kaedah 'utama()' digunakan di sini. Kemudian, kami memulakan pembolehubah 'nilai_pertama' dengan '21'. Di bawah ini, kami mengembalikan salinan rujukan dengan meletakkan 'first_value' dalam fungsi 'ReturnRefFun' dan menyimpannya dalam pembolehubah 'copyed_value'. Kemudian, kami mencetak kedua-dua 'nilai_pertama' dan juga 'nilai_disalin' dengan menggunakan 'cout'. Di bawah ini, kami menambah pembolehubah 'nilai_disalin' dengan meletakkan 'nilai_disalin++'. Kemudian, kami mencetak 'nilai_disalin' selepas menambahnya dan 'nilai_pertama' menggunakan 'cout'. Selepas ini, kami mengembalikan rujukan dengan bantuan memulakan pembolehubah 'int& ref_value' dengan 'ReturnRefFun(first_value)'.

Selepas ini, kami mencetak nilai pembolehubah 'my_ref' yang kami salin. Kemudian, kami mencetak nilai pembolehubah 'nilai_pertama'. Di bawah ini, kami menambah nilai 'ref_value' dengan meletakkan 'ref_value++'. Di bawah ini, kami mencetak nilai tambahan 'nilai_ref' dan juga pembolehubah 'nilai_pertama' dengan bantuan 'cout'. Apabila 'ref_value' ditukar, 'first_value' juga akan berubah.

Kod 3:

#include
menggunakan ruang nama std;
int & ReturnRefFun ( int & my_ref ) {
my_ref++;
kembali my_ref;
}
int utama ( ) {
int nilai_pertama = dua puluh satu ;
int nilai_salinan =ReturnRefFun ( nilai_pertama ) ;
cout << 'Nilai pertama ialah: ' << nilai_pertama << endl;
cout << 'Nilai yang disalin ialah: ' << nilai_salinan << endl;
copy_value++;
cout << 'Nilai_copy dinaikkan: ' << nilai_salinan << endl;
cout << 'Nilai pertama: ' << nilai_pertama << endl;
int & nilai_ref =ReturnRefFun ( nilai_pertama ) ;
cout << 'Nilai yang disalin rujukan: ' << nilai_ref << endl;
cout << 'Nilai pertama: ' << nilai_pertama << endl;
ref_value++;
cout << 'Nilai rujukan dinaikkan : ' << nilai_ref << endl;
cout << 'Nilai pertama: ' << nilai_pertama << endl;
kembali 0 ;
}


Pengeluaran:

Berikut ialah hasil kod sebelumnya di mana kami menggunakan teknik 'rujukan pulangan'. Contoh menunjukkan perbezaan antara mengembalikan pendua pembolehubah rujukan dan mengembalikan pembolehubah rujukan itu sendiri.

Contoh 4:

Di sini, 'int& rByRef' diisytiharkan sebagai fungsi rujukan yang mengembalikan pembolehubah rujukan. Kami menghantar 'int& data' ke fungsi 'int& rByref()' ini. Di sini, kami mencetak alamat pembolehubah 'data' dan kemudian menggunakan rujukan pulangan di bawah ini. Sekarang, kami memulakan pembolehubah 'x_var' selepas menggunakan kaedah 'utama()'. Kemudian, kami mencetak alamat 'x_var' di sini dengan meletakkan '&x_var' dalam 'cout'.

Di bawah ini, kami menggunakan pembolehubah rujukan dengan memberikan 'rByref(x_var)' kepada 'int& y_var'. Kemudian, kami juga mencetak alamat pembolehubah rujukan '&y_var' itu. Di bawah ini, kami menyalin pembolehubah 'x_var' ke dalam pembolehubah 'z_var' dan juga mencetak alamat pembolehubah yang disalin ini iaitu '&z_var'. Selepas ini, kami memanggil fungsi 'rByref()', lulus pembolehubah 'x_var' sebagai parameter di dalamnya, dan tetapkan '93' kepada pembolehubah ini. Kami juga memberikan alamat 'x_var' sekali lagi dengan meletakkan '&x_var' dalam 'cout'.

Kod 4:

#include
menggunakan ruang nama std;
int & rByref ( int & data )
{
cout << 'Alamat data:' << & data << endl;
kembali data;
}
int utama ( )
{
int x_var = 42 ;
cout << 'Alamat x_var: ' << & x_var << endl;
int & y_var = rByref ( x_var ) ;
cout << 'Alamat y_var: ' << & y_var << endl;
int z_var = rByref ( x_var ) ;
cout << 'Alamat z_var: ' << & z_var << endl;
rByref ( x_var ) = 93 ;
cout << 'Alamat x_var: ' << & x_var << endl;
kembali 0 ;
}


Pengeluaran:

Hasilnya menjelaskan bahawa alamat pembolehubah klon, 'z_var', berbeza daripada semua lokasi lain yang dirujuk oleh pembolehubah asal, 'x_var'.

Kesimpulan

Konsep 'rujukan pulangan' diterokai dalam tutorial ini secara terperinci. Kami mengetahui bahawa 'rujukan pulangan' adalah serupa dengan 'petunjuk' dalam pengaturcaraan C++. Kami membincangkan bahawa untuk menunjukkan fungsi yang mengembalikan rujukan, simbol '&' perlu digunakan dengan jenis pemulangan fungsi. Kami menggambarkan beberapa contoh dan hasil mereka dan memahami konsep ini dalam tutorial ini.