الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

ارجاع مصفوفة من دالة

بدأه hommeda في 24 يناير 2014 · 5 رد · 983 مشاهدة · في الأسئلة المجابة
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم ورجمة الله

التحية الي الجميع

اذا كان لدي الكود التالي

	void arrsum(int a[],int b[],int c){	for (int i=0;i<c;i++){	cout<<a+b	}}

يقوم بجمع مصفوفتين وطباعة الناتج..
كيف اجعل الدالة ترجع قيم استطيع حفظها في مصفوفة في البرنامج دون تمريرها الي الداله ..

 

#2

أهلاً بك أخي الكريم

أظن أن السؤال مكرر ولو بحثت في المنتدى لوجدت عدة إجابات ,

يمكنك استخدام هذه الطريقة

#include <iostream>int* arrsum(int a[],int b[],int c){ int *C=new int[c]; std::cout << c;    for (int i=0;i<c;i++){        C=a+b;    }    return C;}int main(){    int a[10]={1,2,3,4,5,6,7,8,9,10};    int b[10]={1,2,3,4,5,6,7,8,9,10};    int *c=arrsum(a,b,10);    for (int i=0;i<10;i++){        std::cout << i << " " << c << std::endl;    }}

بالتوفيق

1
#3

أعرف ان هذا ليس المطلوب و لكن لم استطع المقوامة:

#include <iostream>template<typename T, int N>  T (&arrsum(const T (&a)[N], const T (&b)[N], T(&r)[N]))[N]{	for(int i=0; i<N; ++i)		r = a + b;	return r;}int main(){	int a[3] = { 3, 5, 7 };	int b[3] = { 2, 4, 6 };	int res[3];	int (&ref)[3] = arrsum(a, b, res);		for(int i=0; i<3; ++i)		std::cout << a << " + " << b << " = " << ref << std::endl;}

و الله ولي التوفيق

2

مدونتي: C++ Tips and Tricks

#4

بالمناسبة توجد هنا http://stackoverflow.com/questions/8745260/c-return-array-from-function

  طرق عديدة مذكورة ..

أكثرها C++ــرةً هي هذا

 
std::array<int,2> myfunction(int * my_array)
{
    std::array<int,2> f_array;
    f_array[0] = my_array[0];
    f_array[1] = my_array[1];

    // modify f_array some more

    return f_array;
}
#5

شكرا جزيلا  مصطفي

الكود الاول يقوم بما اريدة تماما

ولكن ا ارجاع المصفوفة الي مؤشر يجعلها خارج ال stack الخاص بالبرنامج

فهل من الممكن تفادي مشكله المؤشر
 

#6
C++er كتب:

أعرف ان هذا ليس المطلوب و لكن لم استطع المقوامة:

 

يبدو ان الc++ قد ...

ليس المطلوب ولكنة اكثر من رائع

اعجبتني فكرة التعامل مع المحتوي للمصفوفة داخل الدالة

1

مواضيع مشابهة