Asma'a نشر 2 ديسمبر 2020 أرسل تقرير مشاركة نشر 2 ديسمبر 2020 لوسمحتم كنت أريد أن تعيد الدالة عنوان من نوع struct ,وأستقبل الناتج بمؤشر من نوع struct أيضاً لكن المحرر بيطلعة ايرور ممكن افهم ايش السبب #include<iostream> using namespace std; typedef struct s1 { float r; float m; }s; s *func(s a,s b,s *c) { cout<<"\npointer\t : "<<c<<"\n*pointer\t : "<<&c;//<<"\n&pointer\t : "<<*c<<endl; c->r=a.r+b.r; c->m=a.m+b.m; return c; } int main() { s a,b,*c,*result; cout<<"\n####################The First Struct###################\n"; cout<<"number one";cin>>a.r; cout<<"number Two";cin>>a.m; cout<<"\n####################The Second Struct###################\n"; cout<<"number one";cin>>b.r; cout<<"number Two";cin>>b.m; cout<<"\n####################The pointer Struct###################\n"; cout<<"number one";cin>>(*c).r; cout<<"number Two";cin>>(*c).m; result=func( a, b,&c); } 1 اقتباس رابط هذا التعليق شارك على الشبكات الإجتماعية More sharing options...
0 Wael Aljamal نشر 2 ديسمبر 2020 أرسل تقرير مشاركة نشر 2 ديسمبر 2020 مرحبا أسماء، لدينا سجلين a,b نريد أن نجمع قيمتهما في دالة func و نخزن النتيجة في result مع استخدام مؤشر وسيط هو c. الخطأ هو أن الدالة func تستقبل الوسيط الثالث من النوع pointer مؤشر على سجل s* ولدينا فعليا المتحول c هو من هذا النوع، فنقوم بتمريره بدون وضع & (التمرير بالعنوان) لكي يحدث توافق بين نوعي المتحولات و الوسيط للتابع. كما يوجد تعليمات لافائدة (إدخال قيم للمتحول c ..)منها سوف اكتب الشيفرة بالطريقة المناسبة: #include<iostream> using namespace std; typedef struct s1 { float r; float m; } s; s *func(s a,s b,s *c) { //cout<<"\npointer\t : "<< c <<"\n*pointer\t : "<< (&c); //<<"\n&pointer\t : "<<*c<<endl; c->r=a.r+b.r; c->m=a.m+b.m; return c; } int main() { s a,b,*c,*result; cout<<"\n####################The First Struct###################\n"; cout<<"number one\n"; cin>>a.r; cout<<"number Two\n"; cin>>a.m; cout<<"\n####################The Second Struct###################\n"; cout<<"number one\n"; cin>>b.r; cout<<"number Two\n"; cin>>b.m; cout<<"\n####################The pointer Struct###################\n"; result=func(a,b,c); cout <<"result=\t r: " << result->r <<"\tm: " << result->m << endl; } أي نمرر c كما هو، حيث من الواضح أنه فقط وسيط للجمع و سنخزن النتيجة في result. بالتوفيق 1 اقتباس رابط هذا التعليق شارك على الشبكات الإجتماعية More sharing options...
0 Hamada Sayed نشر 2 ديسمبر 2020 أرسل تقرير مشاركة نشر 2 ديسمبر 2020 السلام عليكم سبب الخطأ هو انشاء المتغير c كمؤشر واسناد قيم لخصائصه قبل حجز مساحه من الذاكره له بعد التعديل بتاريخ 3 ساعات قال أسماء عبدالله محمود النظاري: #include<iostream> using namespace std; typedef struct s1 { float r; float m; }s; s *func(s a,s b,s *c) { cout<<"\npointer\t : "<<c<<"\n*pointer\t : "<<&c;//<<"\n&pointer\t : "<<*c<<endl; c->r=a.r+b.r; c->m=a.m+b.m; return c; } int main() { s a,b,c,*result; cout<<"\n####################The First Struct###################\n"; cout<<"number one";cin>>a.r; cout<<"number Two";cin>>a.m; cout<<"\n####################The Second Struct###################\n"; cout<<"number one";cin>>b.r; cout<<"number Two";cin>>b.m; result=func( a, b,&c); cout<<"\n####################The pointer Struct###################\n"; cout<<"number one = " <<result->r <<endl; cout<<"number Two = " <<result->m <<endl; return 0; } اقتباس رابط هذا التعليق شارك على الشبكات الإجتماعية More sharing options...
السؤال
Asma'a
لوسمحتم كنت أريد أن تعيد الدالة عنوان من نوع struct ,وأستقبل الناتج بمؤشر من نوع struct أيضاً لكن المحرر بيطلعة ايرور ممكن افهم ايش السبب
رابط هذا التعليق
شارك على الشبكات الإجتماعية
2 أجوبة على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.