Asma'a نشر 1 ديسمبر 2020 أرسل تقرير نشر 1 ديسمبر 2020 #include<iostream> using namespace std; int main() { typedef struct person { int age; float weight; } *ptr ,ptr1; //struct pointer point to struct ptr = &ptr1; cin>>ptr->age; } لماذا لايعمل معي البوينتر مع ال struct اقتباس
0 Wael Aljamal نشر 1 ديسمبر 2020 أرسل تقرير نشر 1 ديسمبر 2020 مرحبا، المشكلة هي وضع الكلمة المفتاحية typedef قبل تعريف السجل person حيث تقوم هذه التعليمة بتعريف اسم آخر لنمط بيانات لدينا مثلا يمكننا تعريف أعداد صحيحة باستخدام كلمة مفتاحية مختلفة عن كلمة int اذا قمنا بما يلي: typedef int myInteger; بعد وضع التعليمة في الشيفرة يمكننا بعدها استخدام myInteger كاسم بديل لاستخدام int, تعديل الشيفرة خاصتك: #include<iostream> using namespace std; int main() { struct person { int age; float weight; } *ptr,ptr1; //struct pointer point to struct ptr = &ptr1; cout << "enter person's details:\n"; cout << "enter person's age\n"; cin >> ptr->age; cout << "enter person's weight\n"; cin >> ptr->weight; cout << "\n"; cout << "our persons details are:\n"; cout << "age: " << ptr-> age << "\t weight: " << ptr->weight << "\n"; } مثال عن تعريف نقطة مع إحداثيات X,Y #include<stdio.h> struct Point{ int x; int y; }; int main() { struct Point p1; p1.x = 1; p1.y = 3; cout << p1.x << "\n"; cout << p1.y << "\n"; return 0; } مثالين لاستخدام typedef لتعريف اسم آخر للسجل الذي نقوم بتعريفه: المثال الأول: #include<stdio.h> struct Point{ int x; int y; }; typedef struct Point Point; int main() { Point p1; p1.x = 1; p1.y = 3; cout << p1.x << "\n"; cout << p1.y << "\n"; return 0; } المثال الثاني: #include<stdio.h> typedef struct Point{ int x; int y; } Point; int main() { Point p1; p1.x = 1; p1.y = 3; cout << p1.x << "\n"; cout << p1.y << "\n"; return 0; } بطبيعة الحال لا يختلفان عن بعضهم إنما لاينفع استخدام عدة أنماط لنفس الاسم كما لديك تعريف متحول و مؤشر لنفس بنية المعطيات. بالتوفيق 3 اقتباس
0 Asma'a نشر 2 ديسمبر 2020 الكاتب أرسل تقرير نشر 2 ديسمبر 2020 #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); } أولاً:أشكرك ..ثانياً لوسمحت كنت أريد أن تعيد الدالة عنوان من نوع struct ,وأستقبل الناتج بمؤشر من نوع struct أيضاً لكن المحرر بيطلعة ايرور ممكن افهم ايش السبب 1 اقتباس
السؤال
Asma'a
لماذا لايعمل معي البوينتر مع ال struct
2 أجوبة على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.