PDA

View Full Version : سوال: مرجع به عنوان مقدار بازگشتی



vahid3420
چهارشنبه 28 اسفند 1392, 14:09 عصر
دوستان عزیز اگه کسی بلده لطفا این کد رو واسه من تجزیو تحلیل کنه تا درست درکش کنم.
با تشکر از شما
#include< iostream.h >

int arr[ 3 ];

int &func( int i )
{
return arr[ i ];
}

void main( )
{
func( 0 ) = 2;
func( 1 ) = 6;
func( 2 ) = -2;
cout << arr[ 0 ] << "\t" << arr[ 1 ] << "\t" << arr[ 2 ];
}

Mojtaba.Shateri
چهارشنبه 28 اسفند 1392, 15:44 عصر
توابع در C++‎‎‎‎‎‎ میتونن به صورت مرجع خروجی برگردونن.
در اینجا تابع func علاوه بر اینکه عملیاتی انجام می دهد ، ارجاعی ضمنی به مکان حافظه ایست که متغیر خروجی در آن قرار دارد.
وقتی اشاره گر ضمنی باشد ، یعنی میتواند نقش یک متغیر را بازی کند ، ساده تر اینکه کلمه (func(0 با [arr[0 در اینجا یکیست.
حال اگه مثلا خروجی func یک متغیر محلی داخل خودش را بر میگرداند ، با تابع عادی کارش یکی می شد.

مثالی در اینجا برای درک بهتر :
#include <iostream>
#include <ctime>

using namespace std;

double vals[] = {10.1, 12.6, 33.1, 24.1, 50.0};

double& setValues( int i )
{
return vals[i];
}


int main ()
{

cout << "Value before change" << endl;
for ( int i = 0; i < 5; i++ )
{
cout << "vals[" << i << "] = ";
cout << vals[i] << endl;
}

setValues(1) = 20.23;
setValues(3) = 70.8;

cout << "Value after change" << endl;
for ( int i = 0; i < 5; i++ )
{
cout << "vals[" << i << "] = ";
cout << vals[i] << endl;
}
return 0;
}