اطلاعیه

Collapse
No announcement yet.

اشاره گر به ساختمان struct

Collapse
X
 
  • فیلتر
  • زمان
  • Show
Clear All
new posts

    اشاره گر به ساختمان struct

    سلام
    دوستان این hossein الان داره به چی اشاره میکنه؟ به کجای استراکت داره اشاره میکنه؟اصلا این یعنی چی؟اصلا این hossein الان چی داره؟ قاطی کردم دیگه با این اشاره گرها.اگه لطف کنید یه توضیحی بدید ممنون میشم.

    کد:
    #include "stdafx.h"
    #include <iostream>
    using namespace std;
    struct info
    {
    	int name;
    	int age;
    };
    int main()
    {
    	struct info *hossein;
    	hossein = new info;
    	hossein->age = 23;
    	cout << hossein->age;
    	system("pause");
    };
    با تشکر.
    به سمت نور خورشيد حرکت کن،تو ميتوني تابش خورشيد رو حس کني ،حتي اگه کور باشي.
    (پيش به سوي هدف)

    #2
    پاسخ : اشاره گر به ساختمان struct

    نوشته اصلی توسط hosseinam1370
    سلام
    دوستان این hossein الان داره به چی اشاره میکنه؟
    با new کردن از یک ساختار یا یک کلاس یک نمونه حقیقی روی حافظه به اندازه کلاس جدا میشه . و آدرس این فضا در اون متغیر از نوع کلاس دیکلار شده قرار میگیرد
    تنها موردي كه همه آدما يقين دارن خدا در حقش زیاد لطف کرده
    داشتن عقله زيادتر از دیگر آدم ها است

    دیدگاه


      #3
      پاسخ : اشاره گر به ساختمان struct

      نوشته اصلی توسط hosseinam1370
      سلام
      دوستان این hossein الان داره به چی اشاره میکنه؟ به کجای استراکت داره اشاره میکنه؟اصلا این یعنی چی؟اصلا این hossein الان چی داره؟ قاطی کردم دیگه با این اشاره گرها.اگه لطف کنید یه توضیحی بدید ممنون میشم.

      کد:
      #include "stdafx.h"
      #include <iostream>
      using namespace std;
      struct info
      {
      	int name;
      	int age;
      };
      int main()
      {
      	struct info *hossein;
      	hossein = new info;
      	hossein->age = 23;
      	cout << hossein->age;
      	system("pause");
      };
      با تشکر.
      سلام برادر ...
      در ادامه صحبتهای دوسته خوبم جناب علی خان ...

      1- Hosein در ابتدا یک اشاره گر تعریف شده ... این اشاره گر از نوع info هست ... این خط از برنامه در حقیقت داره میگه که عملیات + و - مثلا ++ Hosein چگونه تغییر میکند . مثلا اگر شما یه اشاره گر از نوع int داشته باشین در اینصورت به ازای هر بار ++ کردن اون متغیر ... اون پوینتر 2 خانه در درون حافظه جلو میرود ولی اگر پوینتر شما از نوع info باشه ... به ازای هر بار ++ کردن اون ... پوینتر مربوطه 4 خانه جلو میرود ... چون سایز این استراکچر 4 بایت هست .

      2- وقتی Hosein رو New میکنید کامپایلر به این پوینتر 4 خانه حافظه تخصیص میدهد ... تا قبل از اینکه شما عملیات New رو انجام ندادین ... هیچ اطمینانی نداشتین که اطلاعاتی رو در درون Hosein بریزین ... چون ممکن بود Hosein به هر جایی از حافظه اشاره کنه ... ولی اگر شما Hosein رو New کنید کامپایلر این تظمین را به شما میدهد که Pointer Hosein در جایی درست گرفته شده است و اگر شما در درون آن اطلاعات بریزید ... با متغیر دیگری کانفلیکت آدرس حافظه ندارد .

      3- در زمان New کردن متغیر هیچ چیزی ندارد ... تنها برای آنم حافظه تخصیص داده شده است .... اگر خیلی قاط کردی و برات مهمه بهم بزنگ برات توضیح میدم ... 09124050865

      دیدگاه


        #4
        پاسخ : اشاره گر به ساختمان struct

        خیلی ممنون ازتون.
        اگر خیلی قاط کردی و برات مهمه بهم بزنگ برات توضیح میدم ... 09124050865
        ممنون از لطفتون ،حتما مزاحم میشم، ولی فعلا خودم نمیدونم چی میخام که بتونم ازتون بپرسم اونم به صورته زنده ، یکم بفهمم چی میخام حتما تماس میگیرم و مزاحمتون میشم.
        فعلا ذره ذره باید فکر کنم و بپرسم تا بفهمم دنبال چی هستم.


        دوستان الان
        کد:
        *hossein
        هچی تو خودش نداره ؟
        یعنی نمیشه گفت داره اشاره میکنه به این دو متغییر :
        کد:
        struct info
        {
        	int name;
        	int age;
        };

        یعنی hossein به ایندوتا اشاره میکنه؟
        اصلا محتوای داخلی hossein چیه؟


        با تشکر.
        به سمت نور خورشيد حرکت کن،تو ميتوني تابش خورشيد رو حس کني ،حتي اگه کور باشي.
        (پيش به سوي هدف)

        دیدگاه


          #5
          پاسخ : اشاره گر به ساختمان struct

          بذار فرض کنیم هر int دو بایت از حافظه رو اشغال میکنه پس اون ساختار 4 بایت در حافظه جا میگیره که مثلا تو خونه های 1000و1001و1002و1003 قرار گرفتند (در واقع با عملگر new ساختیمشون)
          hossein یه اشاره گره که خوش یه جایی تو حافظه س مثلا تو خونه 1007
          شما مگی که hosseinآ‌آدرس اون ساختاری رو که با New درست کردی رو تو خودش نگه داره (و همیشه اشاره گرها به اولی خونه حافظه از اون چیز اشاره میکنند)
          پس داخل hosseinآ‌ عدد 1000 نوشته میشه
          حالا وقتی به کامپایلر میگی
          hossein->age = 23;
          از اونجاییکه کامپایلر قبلا ساختار info رو دیده میدونه که ageآ‌دومین int داخل ساختار هست پس از ابتدای آدرس ساختار دو تا خونه (به اندازه یه int) میره جلو و بعد در خونه های 1002,1003 عدد 23 رو مینویسه (که چون 23 عددیست کوچکتر از +128 و فقط در یک بایت جا میگیره اون 23آ‌ فقط داخل 1002آ‌ نوشته میشه و داخل 1003 صفر میشه)

          دیدگاه

          لطفا صبر کنید...
          X