PDA

View Full Version : چطور میشه که من یه a[ i ] l رو از تابع فرعی ،بفرستم به تابع main?



hosseinam1370
سه شنبه 17 تیر 1393, 11:47 صبح
سلام
از دیشب تا الان درگیر این شدم که متغییر های آرایه از تابع رو بفرستم به تابع اصلی ، میخام a[50] l رو که در تابع مقادیر آرایه هاش رو عوض کردیم و بفرستم داخل b[50] l . چطور میتونم این کار رو انجام بدم؟ ممنون از راهنماییتون.

#include "stdafx.h"
#include <iostream>
using namespace std;
int vorodi ( );
///
int main()
{
int b[50];
b[50] = vorodi ();
cout <<"<><<><"<< b;
system("pause");
}
///////
int vorodi ( )
{
int a[50];
for (int i=0 ; i<50 ; i++)
{
a[i] = 22;
}
return a;
}

amirtork
سه شنبه 17 تیر 1393, 12:56 عصر
سلام
از اونجایی که آرایه ی a که در تابع vorodi تعریف شده آدرسش برای این تابع local هست و نمیشه یا حداقل من نمیتونم از این آدرس توی تابع main استفاده کنم پس نمیتونم با ارجاع آدرس آرایه یه آرایه با همون مقدار ها تشکیل بدم.
البته من فکر میکنم این کد مشکل شما رو رفع کنه. شما میتونید آرایه ی b رو مستقیم به تابع بدید و اون تغییرات رو مستقیم روی اون انجام بدید هرچند به خاطر اینکه از کل پروژه اطلاع ندارم نمیدونم این به کارتون میاد یا نه. ولی این چیزی بود که الان به ذهن من رسید. احتمالا دوستان دیگه بتونن بهتر راهنمایی کنن
برای اینکه آرایه ی b رو مستقیم به تابع بفرستید میتونید از این کد استفاده کنید:

#include <iostream>
using namespace std;

void _memset(int value, int length , int *arry)
{
for(int i = 0 ; i < length ; i ++)
arry[i] = value;
}

int main()
{
int arry[50];
_memset(-1 , 50 , arry);
for(int i = 0; i < 50 ; i ++)
cout<<arry[i]<<" ";
return 0;
}

emadrezvani
سه شنبه 17 تیر 1393, 16:07 عصر
بصورت اشاره گر به آرایه استفاده کنید و نیازی به معرفی و تخصیص یک آرایه جدید نیست.