پنل پیامک رایگان | بهترین پنل اس ام اس

سامانه پیامک رایگان, رایگان اس ام اس, سامانه پیامکی مجانی, پنل اس ام اس, سامانه پیام کوتاه, پنل پیام کوتاه, ارسال اس ام اس تبلیغاتی, پنل پیامک, پنل sms.

پنل پیامک رایگان | بهترین پنل اس ام اس

سامانه پیامک رایگان, رایگان اس ام اس, سامانه پیامکی مجانی, پنل اس ام اس, سامانه پیام کوتاه, پنل پیام کوتاه, ارسال اس ام اس تبلیغاتی, پنل پیامک, پنل sms.

پنل اس ام اس رایگان - شماره اختصاصی رایگان - امکان ارسال و دریافت در هر ساعت شبانه روز - بازگشت پیام های مسدود تبلیغاتی - ارسال منطقه ای.
بهترین پنل اس ام اس SMS تبلیغاتی انبوه ✓ خرید پنل پیامک رایگان ✓ نمایندگی بهترین پنل پیامک خدماتی مخابرات به صورت رایگان.

بایگانی

۳ مطلب با کلمه‌ی کلیدی «برنامه نویسی» ثبت شده است

انواع متغیرهای برنامه نویسی

جمعه, ۲۷ اسفند ۱۴۰۰، ۰۸:۰۵ ب.ظ

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  • علی حاج

عملگر های مربوط به اشاره‌گر

جمعه, ۲۷ اسفند ۱۴۰۰، ۰۸:۰۴ ب.ظ

#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;
 

  • علی حاج

اشاره‌گر (Pointer)

جمعه, ۲۷ اسفند ۱۴۰۰، ۰۸:۰۳ ب.ظ

🔵 اشاره‌گر (Pointer)

🔹اشاره‌گر ثابت (Constant Pointer)
زمانی که بخواهیم اشاره‌گر تنها قابلیت خواندن مکانی از حافظه را داشته باشد، آن را به صورت "ثابت" تعریف می‌کنیم؛ با این کار می‌توانیم "آدرس‌های" متفاوتی را داخل اشاره‌گر ذخیره کنیم اما نمی‌توانیم "مقادیر" آن‌ها را تغییر دهیم و صرفاً می‌توان مقادیر آن‌ها را خواند و مورد استفاده قرار داد.

به عنوان مثال تابع زیر دو مکان از حافظه را به عنوان ورودی می‌گیرد و مقادیری از حافظه را که بین این دو قرار دارند به کاربر نمایش می‌دهد:

void showNumbersBetween (const int *first , const int *last )
{
const int * current = first;

while ( current != last )
{
cout << *current << endl;
current++; // 1️⃣
}
}

🔺همان طور که می‌بینید ما نیازی به تغییر مقادیر ذخیره شده در حافظه نداشتیم، بنابراین از اشاره‌گر با مقدار ثابت استفاده کردیم.

با این حال در دستور 1️⃣ آدرس اشاره‌گر را تغییر دادیم، چرا که صرفاً "مقدار" اشاره‌گر ثابت است نه "آدرس" آن؛ برای اینکه آدرس اشاره‌گر هم ثابت تعریف شود و نتوان آن را تغییر داد می‌توانیم از دستور زیر برای تعریف اشاره‌گر p استفاده کنیم :

int x = 0;
const int * const p = &x;

🔺دقت کنید که حتماً در زمان تعریف اشاره‌گر ثابت، باید آن را مقداردهی کرد همچنین هر دو دستور زیر تنها یک اشاره‌گر، با "مقدار" ثابت به وجود می‌آورد :

const int * p = &x;
int const * p = &x;

  • علی حاج