اذهب إلى المحتوى
  • 0

لماذا لايعمل البوينتر مع struct في C++ واستخدام typedef

Asma'a

السؤال

Recommended Posts

  • 0

مرحبا،

المشكلة هي وضع الكلمة المفتاحية 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;
}

بطبيعة الحال لا يختلفان عن بعضهم إنما لاينفع استخدام عدة أنماط لنفس الاسم كما لديك تعريف متحول و مؤشر لنفس بنية المعطيات.

بالتوفيق

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0

#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 أيضاً لكن المحرر بيطلعة ايرور ممكن افهم ايش السبب

رابط هذا التعليق
شارك على الشبكات الإجتماعية

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...