Learning ©
5.01K subscribers
81 photos
2 videos
38 files
182 links
کانال تخصصی آموزش برنامه نویسی ©
🎨فهرست مطالب
t.me/Learncpp/2318
💳 تعرفه پین شده تبلیغات👇
@Cancerchilds
💠آموزش شبکه
@amouzesh_shabake
🌐اینستاگرام
instagram.com/learncplusplus
Ceeport
Contact: @QtCplusplus @codingpluss

💞 @RadioInformation 💞
Download Telegram
#pointer #اشاره_گر
🔵 نحوه‌ی ذخیره‌سازی اطلاعات در حافظه

یک سیم را در نظر بگیرید، برای این سیم دو حالت بیش‌تر وجود ندارد:
0⃣ جریان برق از آن عبور نمی‌کند.
1️⃣جریان برق از آن عبور می‌کند.

از آن‌جایی که کامپیوترها با برق کار می‌کنند تنها راه ارتباط با آن‌ها از همین طریق است؛ یعنی یا صفر یا یک، که به آن «مبنای دو» یا «باینری» (Binary) نیز می‌گویند.

🔹بیت (bit)
کوچک‌ترین واحد ذخیره‌سازی اطلاعات در کامپیوتر، بیت است؛ مقدار ذخیره شده در هر بیت می‌تواند "صفر" یا "یک" باشد.

🔹بایت (Byte)
هر بایت شامل 8 بیت می‌باشد؛ به این ترتیب کوچک‌ترین عدد ذخیره شده در یک بایت صفر است که معادل باینری آن 00000000 می‌باشد و بزرگ‌ترین عدد ذخیره شده در یک بایت 255 است که معادل باینری آن 11111111 می‌باشد. بنابراین هر بایت می‌تواند 256 عدد (از صفر تا 255) را در خود ذخیره کند.

🔹حافظه (Memory)
برای ذخیره‌سازی اطلاعات در کامپیوتر از یک سخت‌افزار (Hardware) به نام حافظه کمک می‌گیریم. حافظه انواع مختلفی دارد از جمله:
حافظه‌ی فقط خواندنی (ROM)
حافظه‌ی تصادفی (RAM)
حافظه‌ی خارجی (External Storage)

حافظه از تعداد زیادی «خانه» تشکیل شده است که هر کدام از آن‌ها نماینده‌ی یک بایت یا 8 بیت می‌باشند. برای متمایز کردن این خانه‌ها از یکدیگر به هر کدام از آن‌ها یک «آدرس» تخصیص داده می‌شود. با در اختیار داشتن آدرس یک خانه از حافظه می‌توان مقدار ذخیره شده در آن را تغییر داد.

شکل کُلی خانه‌های حافظه را می‌توانید در پُست t.me/Learncpp/2321 مشاهده کنید.

@Learncpp
#pointer #اشاره_گر
شکل کُلی خانه‌های حافظه
@Learncpp
#pointer #اشاره_گر
🔵 جدول کُدهای ASCII

همان‌طور که پیش‌تر اشاره شد "هر بایت می‌تواند 256 عدد (از صفر تا 255) را در خود ذخیره کند"، بنابراین می‌توان 256 کاراکتر مختلف را در یک بایت ذخیره کرد. به صورت قرار دادی جدولی به نام "جدول کُدهای ASCII" برای این کار ساخته شد؛ در این جدول هر کاراکتر با یک عدد منحصر به فرد از صفر تا 255 متناظر شده است.

جدول کامل کُدهای ASCII را می‌توانید در سایت ascii-code.com مشاهده کنید.

@Learncpp
#pointer #اشاره_گر
🔵 انواع متغیرها

علاوه بر بیت و بایت متغیرهای دیگری نیز برای ذخیره‌سازی اطلاعات وجود دارند؛ البته نحوه‌ی ذخیره‌سازی مقادیر در تمام آن‌ها یکسان است اما در پاره‌ای موارد از جمله "مقدار حافظه‌ی اشغال شده" و "نحوه‌ی مقدار دهی" با یکدیگر متفاوت هستند.
در این‌جا به بیان مشخصات چند نوع مهم از متغیرها می‌پردازیم.

🔹عدد صحیح (int)
🔻حافظه‌ی اشغال شده
4
بایت معادل 32 بیت

🔻کوچک
‌ترین عدد ذخیره شده
-2,147,483,648

🔻بزرگ ‌ترین عدد ذخیره شده
+2,147,483,647

🔺چون عدد صفر جزءِ اعداد مثبت در نظر گرفته شده است، تعداد اعداد مثبت یک واحد کمتر از تعداد اعداد منفی است.

🔹عدد اعشاری با دقت کم (float)
🔻حافظه‌ی اشغال شده
4
بایت معادل 32 بیت

🔻کوچک
‌ترین عدد ذخیره شده
1.175494351 E – 38

🔻بزرگ ‌ترین عدد ذخیره شده
3.402
823466 E + 38

🔹عدد اعشاری با دقت زیاد (double)
🔻حافظه‌ی اشغال شده
8
بایت معادل 64 بیت

🔻کوچک‌ ترین عدد ذخیره شده
2.225073
8585072014 E – 308

🔻بزرگ‌ ترین عدد ذخیره شده
1.797693
1348623158 E + 308

🔺هر دو نوعِ float و double برای ذخیره ‌سازی اعداد اعشاری به کار می‌روند با این تفاوت که نوعِ double امکانِ ذخیره‌سازیِ تعدادِ ارقامِ اعشاریِ بیش‌ تری را فراهم می‌کند.

🔹کاراکتر (char)
🔻حافظه‌ی اشغال شده
1 بایت معادل 8 بیت

🔻کوچک
‌ترین عدد ذخیره شده
0

🔻بزرگ ‌ترین عدد ذخیره شده
255

جدول کاملِ انواع متغیرها را می‌توانید در پُست بعد مشاهده کنید.

@Learncpp
#pointer #اشاره_گر
جدول کاملِ انواع متغیرها

اطلاعات بیشتر:
t.me/Learncpp/91

@Learncpp
This media is not supported in your browser
VIEW IN TELEGRAM
#pointer #اشاره_گر
انیمیشن نحوه ذخیره متغییرها و اشاره گرها در حافظه

@Learncpp
#pointer #اشاره_گر

🔹عملگر های مربوط به اشاره‌گر :
در رابطه با استفاده از اشاره‌گر ها دو عملگرِ * و & مورد استفاده قرار می‌گیرند.

🔺عملگر * :
برای تعریف یک اشاره‌گر و هم چنین مشخص کردن محتویات جایی که متغیر اشاره‌گرش به آن اشاره می‌کند استفاده می‌شود.

🔺عملگر & :
آدرس جایی که متغیر اشاره‌گرش به آن اشاره می کند را بر می‌گرداند.

به عنوان مثال به این قطعه کُد توجه کنید:
int x;
double y;

int *ptrP1 , *ptrP2;

x = 2018;
y = 1397;

ptrP1 = &x; //1️⃣
ptrP2 = &y; //2️⃣

کُد بالا یک متغیر صحیحِ 4 بایتی به نام x در خط بعد یک متغیر 8 بایتی به نام y و در نهایت دو اشاره‌گر صحیحِ 4 بایتی با نام ptrP1 و نام ptrP2 ایجاد می‌کند.

فرض کنید متغیر x در خانه‌ی 100 حافظه باشد و چون 4 بایت است پس 4 بایت از حافظه را اشغال می‌کند هم چنین فرض کنید متغیر y در خانه‌ی 105 حافظه باشد و چون 8 بایت است پس 8 بایت از حافظه را اشغال می‌کند.

حال دستور 1️⃣ باعث می‌شود اشاره‌گر ptrP1 به x و دستور 2️⃣ باعث می‌شود
اشاره‌گر ptrP2 به y اشاره کند.

🔺اما اگر برنامه‌ی بالا را اجرا کنیم، جواب درستی نخواهیم گرفت ؛ چرا
اگر ما اشاره‌گر ptrP1 را چاپ کنیم عدد 2017 چاپ خواهد شد ولی اگر اشاره‌گر ptrP2 را چاپ کنیم عدد 1396 چاپ نخواهد شد و جواب یا چیز دیگری است یا کامپایلر خطا می‌گیرد، چرا که متغیر y هشت بایت از حافظه را اشغال می‌کند اما اشاره‌گر ptrP2 تنها می‌تواند به چهار بایت اشاره کند؛ این یعنی از 8 بایت متغیر y فقط 4 بایت اول‌‍ش درون اشاره‌گر ptrP2 ریخته می‌شود و 4 بایت بعدی گم می‌شد یا کامپایلر خطا می‌گیرد.

🔸پس باید همیشه توجه داشته باشیم متغیرها با اشاره‌گرها هم‌نوع باشند تا با خطا یا نتیجه‌ی نادرستی روبه‌رو نشویم.

🔺برای حل مشکل بالا می‌توانیم نوع ptrP2 را به double تغییر دهیم:

int x;
double y;

int *ptrP1 ;
double *ptrP2;

x = 2018;
y = 1397;

ptrP1 = &x;
ptrP2 = &y;

@Learncpp
👍1
#pointer #اشاره_گر
🔴 تعریف اشاره گر

اشاره گر ها (Pointer) ویژگی های قدرتمند زبان ++C هستند که باعث تفاوت زبان سی پلاس پلاس با زبان های دیگر مانند Java و Python می شود.

🔻اشاره گر ها در ++C برای دسترسی به حافظه و تغییر مقادیر با استفاده از آدرس آن ها به کار می روند.


🔶 آدرس در ++C

🔻برای درک اشاره گر ها ابتدا باید بدانید تا داده ها چگونه در کامپیوتر ذخیره می شوند.

🔻هر متغیری را که در برنامه تان ایجاد می کنید، یک مکان در حافظه کامپیوتر به آن اختصاص داده می شود.

🔻مقادیر متغیر ها در واقع در مکان اختصاص داده شده ذخیره می شوند.

🔻برای دانستن اینکه داده ها در کجا ذخیره شده اند، ++C عملگر & را در اختیار ما گذاشته است.
عملگر & آدرس اشغال شده توسط هر متغیر را به ما می دهد.

🔅مثال : آدرس متغیر var را با var& بدست می آوریم.


'''#include <iostream>

using namespace std;

int main( )

{

    int var1 = 3;

    int var2 = 24;

    int var3 = 17;

    cout << &var1 << endl;

    cout << &var2 << endl;

    cout << &var3 << endl;

}'''

خروجی:
0x7fff5fbff8ac

0x7fff5fbff8a8

0x7fff5fbff8a4

نتیجه یکسانی با آنچه که من گرفتم را نداشته باشید.

🆔️ @Learncpp
👍9🙏1
#pointer #اشاره_گر
🔵 نحوه‌ی ذخیره‌سازی اطلاعات در حافظه

یک سیم را در نظر بگیرید، برای این سیم دو حالت بیش‌تر وجود ندارد:
0⃣ جریان برق از آن عبور نمی‌کند.
1️⃣جریان برق از آن عبور می‌کند.

از آن‌جایی که کامپیوترها با برق کار می‌کنند تنها راه ارتباط با آن‌ها از همین طریق است؛ یعنی یا صفر یا یک، که به آن «مبنای دو» یا «باینری» (Binary) نیز می‌گویند.

🔹بیت (bit)
کوچک‌ترین واحد ذخیره‌سازی اطلاعات در کامپیوتر، بیت است؛ مقدار ذخیره شده در هر بیت می‌تواند "صفر" یا "یک" باشد.

🔹بایت (Byte)
هر بایت شامل 8 بیت می‌باشد؛ به این ترتیب کوچک‌ترین عدد ذخیره شده در یک بایت صفر است که معادل باینری آن 00000000 می‌باشد و بزرگ‌ترین عدد ذخیره شده در یک بایت 255 است که معادل باینری آن 11111111 می‌باشد. بنابراین هر بایت می‌تواند 256 عدد (از صفر تا 255) را در خود ذخیره کند.

🔹حافظه (Memory)
برای ذخیره‌سازی اطلاعات در کامپیوتر از یک سخت‌افزار (Hardware) به نام حافظه کمک می‌گیریم. حافظه انواع مختلفی دارد از جمله:
حافظه‌ی فقط خواندنی (ROM)
حافظه‌ی تصادفی (RAM)
حافظه‌ی خارجی (External Storage)

حافظه از تعداد زیادی «خانه» تشکیل شده است که هر کدام از آن‌ها نماینده‌ی یک بایت یا 8 بیت می‌باشند. برای متمایز کردن این خانه‌ها از یکدیگر به هر کدام از آن‌ها یک «آدرس» تخصیص داده می‌شود. با در اختیار داشتن آدرس یک خانه از حافظه می‌توان مقدار ذخیره شده در آن را تغییر داد.

شکل کُلی خانه‌های حافظه را می‌توانید در پُست t.me/Learncpp/2321 مشاهده کنید.

@Learncpp
👍201😁1🤔1🤯1