وقتی اشاره گری را افزایش یا کاهش می دهیم در واقع اینکار را با آدرسها انجام خواهیم داد و متناسب با طول آن متغیر کم یا زیاد می کنیم. در شکل بالا p متغیری از نوع int است پس با هر واحد افزایش، pointer 2 خانه یعنی 2 بایت در حافظه پیش خواهد رفت و متغیر char از نوع char در نظر گرفته شده که با هر واحد افزایش یا کاهش فقط یک خانه کم یا زیاد می شود .
👍1
مقایسه اشاره گرها :
وقتی در مورد اشاره گرها صحبت می کنیم ذهن خود را به سمت آدرس حافظه ببرید. وقتی دو اشاره گر با یکدیگر برابرند که هر دو به یکجا اشاره نمایند، در این صورت هر تغییر در آن آدرس منجر به تغییر هر دو اشاره گر خواهد شد اما اگر مفدار آدرس دو اشاره کر برابر نباشد هر چند که محتویات آن دو آدرس مختلف با هم برابر باشد نمی توان گفت که آن دو با هم برابر هستند زیرا با تغییر در محتوا یا آدرس یکی از آن دو دیگری تغییری نمی کند .
وقتی در مورد اشاره گرها صحبت می کنیم ذهن خود را به سمت آدرس حافظه ببرید. وقتی دو اشاره گر با یکدیگر برابرند که هر دو به یکجا اشاره نمایند، در این صورت هر تغییر در آن آدرس منجر به تغییر هر دو اشاره گر خواهد شد اما اگر مفدار آدرس دو اشاره کر برابر نباشد هر چند که محتویات آن دو آدرس مختلف با هم برابر باشد نمی توان گفت که آن دو با هم برابر هستند زیرا با تغییر در محتوا یا آدرس یکی از آن دو دیگری تغییری نمی کند .
int *p1, *p2, char1, char2;
char1 = char2 = 'Q';
p1 = &char1;
p2 = &char2;
if( p1 == p2 )
true
else
false
char1 = char2 = 'Q';
p1 = &char1;
p2 = &char2;
if( p1 == p2 )
true
else
false
در کد C++ بالا چون اشاره گرها هر یک به آدرسهای مختلفی اشاره می کنند هر چند مقادیر آن آدرسها یکی است اما با هم برابر نیستند .
یکی از اصلی ترین و مهم ترین بخش ها در هر زبان برنامه نویسی شرط ها هستند به طوری که اگر شما پیچیده ترین برنامه هارو هم در نظر بگیرین در نهایت به شرط های ساده درون کد های برنامه میرسید. در این جلسه با دو نوع دستور شرطی if و switch در زبان ++c آشنا خواهیم شد.
در مثال بالا اگر مقدار متغیر a کوچکتر از 50 بود بدنه شرط اجرا می شود و مقدار متغیر a در خروجی چاپ می شود
ولی شرایطی هم به وجود میاد که شما قصد دارین چند شرط رو به صورت پشت سر هم چک کنید. در این صورت شما میتونید از else و else if استفاده کنید:
int a;
cout « "enter num : " « endl;
cin » a;
if(a<50)
{
cout « a « endl;
}
else if(a>50)
{
cout « a « endl;
}
else
{
cout « a « " = 50 " « endl;
}
cout « "enter num : " « endl;
cin » a;
if(a<50)
{
cout « a « endl;
}
else if(a>50)
{
cout « a « endl;
}
else
{
cout « a « " = 50 " « endl;
}
در مثال بالا یک عدد از وردی گرفتیم و در متغیر a قرار دادیم اگر a کوچکتر از 50 بود شرط اجرا میشه اگر بزرگت از 50 بود شرط دوم اجرا میشه و اگر غیر از این دو شرط بود ینی مقدار متغیر a برابر به 50 بود قسمت آخر else اجرا میشه
در این حالت در صورتی که شرط اول درست نباشه برنامه شرط دوم رو چک میکنه و اگه اون هم درست نباشه به سراغ دستورات قسمت else میره و اون هارو اجرا میکنه. حالا چند نکته راجع به استفاده از دستور if
دستور if میتونه بدون قسمت else هم کار کنه در این صورت بعد از چک کردن همه شرط ها اگه هیچ کدام از شرط ها درست نبود هیچ کاری انجام نمیشه.
در صورتی که بیش از دو شرط داشته باشین میتوانید از چند دستور else if پشت سر هم استفاده کنید.
دستور else if به تنهایی قابل استفاده نیست و حتما باید ابتدا یک دستور if داشته باشیم.
در صورتی که بدنه شرط شما یک خط کد باشه نیاز به استفاده از {} برای ساخت بلاک دستورات نیست
دستور if میتونه بدون قسمت else هم کار کنه در این صورت بعد از چک کردن همه شرط ها اگه هیچ کدام از شرط ها درست نبود هیچ کاری انجام نمیشه.
در صورتی که بیش از دو شرط داشته باشین میتوانید از چند دستور else if پشت سر هم استفاده کنید.
دستور else if به تنهایی قابل استفاده نیست و حتما باید ابتدا یک دستور if داشته باشیم.
در صورتی که بدنه شرط شما یک خط کد باشه نیاز به استفاده از {} برای ساخت بلاک دستورات نیست
یک نوع شرطی دیگه هم وجود داره که معمولا به خلاصه شرط if شناخته میشه و به صورت مثال زیر نوشته میشه :
b = (a == 1) ? 3 : 4;
این خط کد به این صورت عمل می کنه که ابتدا برنامه چک میکنه آیا a برابر یک هست یا نه که اگه برابر یک باشه مقدار بعد از ؟ در b قرار میگیره یعنی b برابر ۳ میشه و اگه a برابر یک نباشه مقدار بعد از : در b قرار میگیره یعنی b برابر ۴ میشه.
b = (a == 1) ? 3 : 4;
این خط کد به این صورت عمل می کنه که ابتدا برنامه چک میکنه آیا a برابر یک هست یا نه که اگه برابر یک باشه مقدار بعد از ؟ در b قرار میگیره یعنی b برابر ۳ میشه و اگه a برابر یک نباشه مقدار بعد از : در b قرار میگیره یعنی b برابر ۴ میشه.
حالا سراغ دستور شرطی switch میریم.
switch (مقداری که در شرط ها چک میشود)
{
case شرط اول :
بدنه شرط
break;
case شرط دوم :
بدنه شرط
break;
.
.
.
.
default:
بدنه شرط
}
switch (مقداری که در شرط ها چک میشود)
{
case شرط اول :
بدنه شرط
break;
case شرط دوم :
بدنه شرط
break;
.
.
.
.
default:
بدنه شرط
}
این دستور به این صورت عمل میکنه که یک متغییر به دستور switch داده میشه و برنامه چک میکنه کدام مقدار در case ها با مقدار متغییر داده شده برابر هست و دستورات مربوط به همان قسمت اجرا میشه و اگه مقدار مشابهی پیدا نشد دستورات قسمت default اجرا خواهد شد. به مثال زیر توجه کنید: