#160#template #overloaing
✅قالب توابع (Template)
🔹تعریف مجدد توابع کلی
❌ گاهی اوقات لازمه موقع فراخوانی تابع به کامپایلر بگیم که چه نوعی رو برای قالب تابع ارسال کند برای مثال فقط نوع int را template فرستاده شود که برای این کار از الگوی زیر استفاده می کنیم
function_name<type>(argumenet);مثال) برنامه ای بنویسید که موقع فراخوانی فقط نوع int به template پاس داده شود
#include <iostream>
using namespace std;
template <class T>
void show(T number)
{cout<<number;
}
int main()
{show<int>('a');return 0;
}
همانطور که در کد بالا دیدید کد show <int> ('a'); باعث می شود تا کد اسکی کاراکتر a به template فرستاده شود دلیل این کارم به خاطره اینه که ما(برنامه نویس) به کامپایلر دستور میدیدم که حتما باید آرگومان ارسالی از نوع int باشد
@Learncpp
#161#template #overloaing
✅قالب توابع (Template)
🔹تعریف مجدد template ها
🔻منظور از تعریف مجدد template ها یعنی اینکه یک template به اسم func داریم و میخوایم یک template دیگه با همین اسم ایجاد کنیم برای این کار باید تعداد پارامتر های template ها با هم تفاوت داشته باشند برای مثال قالب های زیر از نظر تعداد پارامترها با هم متفاوتند
template <class T1>
template <class T1,class T2>
@Learncpp
#162#template #overloaing
✅قالب توابع (Template)
🔹تعریف مجدد template ها
مثال) برنامه ای که چگونگی تعریف مجدد template ها را نمایش می دهد
#include <iostream>
using namespace std;
template <class T1,class T2>
void function(T1 x, T2 y)
{cout<<x<<" "<<y<<endl;
}
template <class T1>
void function(T1 x)
{cout<<x<<endl;
}
int main()
{function(3694,"@learncpp");
function(2468);
return 0;
}
@Learncpp
#163#function #array #arg #argumenet
✅ آرایه ها به عنوان آرگومان های توابع
🔹همانطور که متغییر ها را می توانیم به عنوان آرگومان برای توابع ارسال کنیم آرایه ها را نیز می توانیم برای توابع ارسال کرد به صورت پیشفرض آرایه ها شبیه متغیر های ارجاع با آدرس به توابع ارسال می شوند
برای ارسال يک آرايه به عنوان آرگومان به يک تابع ، کافيست نام آرايه را بدون علامت براکت ([ ]) به کار ببريد به عنوان مثال اگر آرايه ای با نام x به صورت زير تعريف شده باشد :
int x[24];برای ارسال آن به تابع test_array کافيست تابع را به صورت زير:
test_array(x,24);فراخوانی کنيد دستور بالا آرايه و طول آن را به تابع test_array ارسال می کند
❌ در هنگام فراخوانی تابع برای ارسال آرایه تنها اسم آرایه را باید بنویسیم
🔹مزیت ارسال آرایه ها به توابع:
🔺به جای اینکه چندین متغییر هم نوع تعریف و به تابع ارسال کنیم می توانیم از آرایه ها استفاده کنیم
🔺چون ذات آرایه ها همانند اشاره گرهاست پس اگر آرایه ای را برای تابع ارسال کنیم هر تغییری توی عناصر آرایه باعث تغییر در آرایه ای که در هنگام فراخوانی به عنوان آرگومان ارسال شده است می شود
@Learncpp
#164#function #array #arg #argumenet
✅ آرایه ها به عنوان آرگومان های توابع
🔹ارسال آرایه های یک بعدی به آرایه ها
برای ارسال آرایه یک بعدی به توابع به دو نکته باید توجه کرد:
1. اگر تابعی به صورت الگو (telegram.me/Learncpp/410) تعریف کرده باشیم نحوه نوشتن آرایه به صورت زیر هست یعنی ایتدا یکی از نوع داده نوشته می شود سپس از [ ] استفاده میکنیم تا به کامپایلر بفهمونیم که آرگومان از نوع آرایه هست ولی در پایین main برای تابع اسمی مشخص می کنیم
مثال)
#include <iostream>
using namespace std;
void func(int[]);
int main()
{int arr[10]={1,2,3,4,5,6,7,8,9,10};func(arr);
return 0;
}
void func(int a[])
{for(int i=0;i<10;i++)
cout<<a[i]<<" ";
}
2. اگر تابع را به صورت معمولی بالای main تعریف کردیم باید قبل از [ ] اسم تابع را بنویسیم
مثال)
#include <iostream>
using namespace std;
void func(int a[])
{for(int i=0;i<10;i++)
cout<<a[i]<<" ";
}
int main()
{int arr[10]={1,2,3,4,5,6,7,8,9,10};func(arr);
return 0;
}
@Learncpp
Telegram
Learning ©➕➕
#120
#function #توابع
✅ نحوه استفاده از الگوی توابع در ++C
توجه کنیم هر کدی که مینویسیم باید بالای main باشه و اگه بخوایم تابع را پایین main بنویسیم تابع قادر به شناسایی داخل main نیست , و کامپایلر خطا میده پس چطوری باید تابع را پایین main بنویسیم که با…
#function #توابع
✅ نحوه استفاده از الگوی توابع در ++C
توجه کنیم هر کدی که مینویسیم باید بالای main باشه و اگه بخوایم تابع را پایین main بنویسیم تابع قادر به شناسایی داخل main نیست , و کامپایلر خطا میده پس چطوری باید تابع را پایین main بنویسیم که با…
❤1
#165#function #array #arg #argumenet
✅ آرایه ها به عنوان آرگومان های توابع
🔹ارسال آرایه های دو بعدی به آرایه ها
❌توضیحات بیشتر در پست (telegram.me/Learncpp/298)
ارسال آرایه دو بعدی شبیه آرایه های یک بعدی است با این تفاوت که از 2 تا [ ] استفاده میکنیم یکی برای سطر و یکی برای ستون
برای درک بهتر مطلب گفته شده به تصویر (telegram.me/Learncpp/480) دقت کنید
@Learncpp
Telegram
Learning ©➕➕
#88
☑️ آرایه ها
🔹آرایه های دو بعدی :
در آرایه های دو بعدی با دو اندیس میتوان به هر عنصر از آن دست یافت و آرایه های دو بعدی به صورت زیر تعریف میشوند:
type ArrayName [ArraySize] [ArraySize];
نوع (type) یکی از انواع دادهای قابل استفاده در سی پلاس پلاس است.…
☑️ آرایه ها
🔹آرایه های دو بعدی :
در آرایه های دو بعدی با دو اندیس میتوان به هر عنصر از آن دست یافت و آرایه های دو بعدی به صورت زیر تعریف میشوند:
type ArrayName [ArraySize] [ArraySize];
نوع (type) یکی از انواع دادهای قابل استفاده در سی پلاس پلاس است.…
#166
#function #array #arg #argumenet
✅ آرایه ها به عنوان آرگومان های توابع
🔹آرایه های دو بعدی به آرایه ها
@Learncpp
#function #array #arg #argumenet
✅ آرایه ها به عنوان آرگومان های توابع
🔹آرایه های دو بعدی به آرایه ها
@Learncpp
#167#function #array #arg #argumenet
✅ آرایه ها به عنوان آرگومان های توابع
🔹ارسال آرایه های دو بعدی به آرایه ها
مثال) برنامه ای بنویسید که جدول ضرب 8 در 8 را در یک آرایه دو بعدی بریزد و نمایش دهد.
#include <iostream>
using namespace std;
int main()
{int a[9][9];
for(int i=0;i<9;i++)
{for(int j=0;j<9;j++)
{a[i][j]=i*j ;
cout<<a[i][j]<<"\t";
}
cout<<endl;
}
return 0;
}
@Learncpp
#168#storage_class #storage #class #auto #register #static #extern
✅کلاس های حافظه (Storage Class) در ++C
در زبان C (و ++C) قابلیتی به بنام کلاس های حافظه وجود دارد به نام های
🔹auto
🔹register
🔹static
🔹extern
استفاده هر یک از این کلاس ها برای کامپایلر مشخص میکنه که باید چطوری با متغییر ها رفتار بکنه
🔹استفاده از هر یک از کلاس های بالا برای متغییر ها دو ویژگی به هر متغییر اضافه میکند :
🔺محدوده استفاده از متغییر
🔺طول عمر متغییر
🔹محدوده استفاده از متغییر:
همانطور که از اسم محدوده مشخصه یعنی حد و مرز مثلا فرض کنید یک متغیری داریم که میخوایم فقط داخل یک تابع قابل شناسایی باشه تا دیگر توابع دسترسی به این متغییر نداشته باشد
🔹طول عمر متغییر:
منظور از طول عمر یک متغییر به این معنیه که ما (برنامه نویس) تعیین کنیم عمر متغییر چقدر باشه مثلا دوست داریم متغییر از اون زمانی که برنامه اجرا میشه ایجاد و تا زمانی که برنامه را به طور کامل نبسته ایم از بین نره یا نه میخوایم توی یک تابعی یک متغییر ایجاد بشه و نتیجه یک یکسری محاسبات رو داخل اون متغییر بریزیم سپس نتیجه رو توسط اون متغییر چاپ کنیم و پس از چاپ هم با خروج از اون تابع اون متغییر هم از بین بره
برای اینکه به کامپایلر دستور بدیم برای هر متغییری چه کلاسی را استفاه کند از الگوی زیر استفاده می کنیم
storage_class type var_name
مفهوم storage_class:
یعنی اینکه باید یکی از کلاس های حافظه در این قسمت قرار بگیره
مفهوم type:
در این قسمت باید یک نوع داده ای (telegram.me/Learncpp/91) استفاده کنیم
مفهوم var_name:
در این اینجا باید اسمی برای متغییر (telegram.me/Learncpp/107) انتخاب کنیم
@Learncpp
Telegram
Learning ©➕➕
انواع داده ها و مقادیر قابل قبول آنها
@Learncpp
@Learncpp
#169#storage_class #storage #class #auto
✅کلاس های حافظه (Storage Class) در ++C
🔹کلاس حافظه ی اتوماتیک (auto)
به صورت پیش فرض وقتی متغییری را تعریف میکنیم دارای کلاس حافظه اتوماتیک هست به این معنی که وقتی به صورت معمولی متغییری را در یک تابع یا براکت (telegram.me/Learncpp/374) یا... ایجاد میکنیم فقط درون همان تابع یا براکت قابل شناسایی هست به این معنی که کامپایلر وقتی وارد تابع شد متغییر به صورت اتوماتیک ایجاد و با خارج شدن از تابع هم به صورت اتوماتیک از بین می روند پس متوجه شدیم که محدوده متغییری که از نوع auto تعریف می شود فقط داخل همان تابع هست و بیرون از تابع قابل شناسایی نیست همچنین طول عمر این نوع متغییرها برابر با زمانی هست که کامپایلر به ابتدا تابع رسیده و ایجاد شده و پس از رسیدن به آخر تابع نیز نابود خواهند شد
@Learncpp
Telegram
Learning ©➕➕
#109
#براکت #Brackets #کلاس #class
✅ استفاده از براکت ها برای ایجاد محدوده
🔹 براکت { } چیست ؟
به زبان ساده براکت یه جفت { } باز و بسته است که محدوده ای رو مشخص میکنه یعنی از جایی که براکت باز میشه تا جایی که براکت بسته میشه و متغییر هایی که داخل اون تعریف…
#براکت #Brackets #کلاس #class
✅ استفاده از براکت ها برای ایجاد محدوده
🔹 براکت { } چیست ؟
به زبان ساده براکت یه جفت { } باز و بسته است که محدوده ای رو مشخص میکنه یعنی از جایی که براکت باز میشه تا جایی که براکت بسته میشه و متغییر هایی که داخل اون تعریف…
#170#storage_class #storage #class #auto
✅کلاس های حافظه (Storage Class) در ++C
🔹نحوه تعریف متغییری از نوع auto
auto string name;❌کامپایلر ها به صورت پیش فرض برای متغییر هایی که کلاس حافظه auto برای آنها ذکر نشود را از این نوع کلاس در نظر می گیرد, برای مثال کدهای زیر معادل یکدیگر هستند
int i;
auto int i;
❌ در کامپایلر Visual C++11 (کامپایلرهای دیگه این امکان را ندارند) زمانی که از auto پشت یک متغییر استفاده می کنیم با این کار داریم به متغییر می گوییم که هر مقداری را که در زمان ایجاد شدن به متغییر داده شد نوع داده ای آن متغییر را نیز به صورت اتوماتیک مطابق با مقدار که به متغییر دادیم انتخاب کن برای مثال کد زیر را در نظر بگیرید:
auto i="@Learncpp";کد بالا به صورت اتوماتیک نوع داده ای متغییر را از نوع string قرار خواهد داد چون مقداری که به متغییر i انتصاب داده می شود از نوع string هست
❌ وقتی در کامپایلر Visual C++11 از auto استفاده می کنیم باید دقت داشته باشیم تا موقع تعریف متغییر مقداری را به متغییر بدهیم تا کامپایلر بتواند نوع داده ای را برای متغییر مشخص کند ولی اگر هنگام تعریف متغییر مقداری مشخص نکنیم با خطایی مبنی بر اینکه حتما باید در هنگام تعریف متغییر مقداری هم به متغییر داده شود مواجه خواهیم شد
@Learncpp
#171#storage_class #storage #class #auto
✅کلاس های حافظه (Storage Class) در ++C
🔹استفاده از کلاس حافظه auto
مثال) برنامه ای بنویسید که نحوه تعریف متغییری از نوع auto , محدوده شناسایی و طول عمر متغییری به نام variable را نشان می دهد
❌کدهای زیر در کامپایلر های دیگر به غیره Visual C++11 به بعد اجرا شوند (دلیلشم در پست telegram.me/Learncpp/484 توضیح داده شد)
#include <iostream>
using namespace std;
void auto_test()
{auto string date;
date="1395/6/27";
cout<<date;
}
int main()
{auto_test();
return 0;
}
در مثال بالا تابعی به نام auto_test تعریف کرده ایم که در بدنه این تابع متغییری به نام date از نوع کلاس auto با نوع داده ای string ایجاد سپس در متنی را درون متغییر date ریخته و آن را چاپ کرده ایم
@Learncpp
Telegram
Learning ©➕➕
#170
#storage_class #storage #class #auto
✅کلاس های حافظه (Storage Class) در ++C
🔹نحوه تعریف متغییری از نوع auto
auto string name;
❌کامپایلر ها به صورت پیش فرض برای متغییر هایی که کلاس حافظه auto برای آنها ذکر نشود را از این نوع کلاس در نظر می گیرد, برای…
#storage_class #storage #class #auto
✅کلاس های حافظه (Storage Class) در ++C
🔹نحوه تعریف متغییری از نوع auto
auto string name;
❌کامپایلر ها به صورت پیش فرض برای متغییر هایی که کلاس حافظه auto برای آنها ذکر نشود را از این نوع کلاس در نظر می گیرد, برای…
#172#storage_class #storage #class #auto
✅کلاس های حافظه (Storage Class) در ++C
🔹طول عمر و محدوده کلاس حافظه auto
خب حالا بیایم محدوده و طول عمر متغییر date رو یکم با هم برسی کنیم اگه دقت کنیم وقتی کامپایلر به ابتدای مثال تابع auto_test telegram.me/Learncpp/485) پرش می کند (نحوه پرش توابع telegram.me/Learncpp/414) متغییر data ایجاد می شود و وقتی به براکت بسته تابع یعنی } رسید نابود می شود
🔹از کجا بدونیم حرفی که در مورد محدوده و طول عمر متغییر date در مثال (telegram.me/Learncpp/485) زدیم درسته؟
خب اگه بیایم بعد فراخوانی تابع auto_test درون main خط زیر را اضافه کنیم با خطایی مبنی بر اینکه متغییر date در این محدوده تعریف نشده
error: 'date' was not declared in this scopeپس متوجه شدیم که وقتی متغییری را نوع کلاس اتوماتیک یعنی auto تعریف میکنیم محدوده و طول عمرش فقط درون همان تابعی هست که آن متغییر را تعریف کردیم و امکان دسترسی توابع دیگر به این تابع وجود ندارد
@Learncpp
Telegram
Learning ©➕➕
#171
#storage_class #storage #class #auto
✅کلاس های حافظه (Storage Class) در ++C
🔹استفاده از کلاس حافظه auto
مثال) برنامه ای بنویسید که نحوه تعریف متغییری از نوع auto , محدوده شناسایی و طول عمر متغییری به نام variable را نشان می دهد
❌کدهای زیر در کامپایلر…
#storage_class #storage #class #auto
✅کلاس های حافظه (Storage Class) در ++C
🔹استفاده از کلاس حافظه auto
مثال) برنامه ای بنویسید که نحوه تعریف متغییری از نوع auto , محدوده شناسایی و طول عمر متغییری به نام variable را نشان می دهد
❌کدهای زیر در کامپایلر…
#173#storage_class #storage #class #register
✅کلاس های حافظه (Storage Class) در ++C
🔹کلاس حافظه ی ثبات (register)
زمانی که از کلاس حافظه ثبات برای متغییری استفاده می کنیم به کامپایلر دستور می دهیم که متغییری که از نوع ثبات (register) تعریف شده بجای حافظه Ram از ثبات های CPU برایش حافظه بگیرد و از این به بعد هر موقع به این متغییر داخل برنامه نیاز شد داخل خونه های ثبات دنبالش بگردد تا سرعت پردازش و دسترسی به این متغییر بیشتر شود
برای درک بهتره مطلب کلاس حافظه ی ثبات به مثال کتابخانه دقت کنید:
فرض کنید داخل یک کتابخونه ای هستید که این کتابخونه یک کتابدار هم دارد که مسئولیتش دادن کتاب به اعضاست, خب تو این کتابخونه ممکنه بعضی از کتابها مثل کتاب "چطوری نصفه روزه پولدار بشیم" مورد علاقه خیلی از اعضا باشد و طرفدارهایش بیشتر از کتابهای دیگه باشه پس این کتابدار کتابهایی را که میدونه پر طرفدار هستند و بیشتر مورد استفاده اعضای کتابخونه قرار میگیره رو کنار دست خودش میذاره تا هر کسی یکی از این کتاب ها رو تقاضا کرد کتابدار فورا کتاب رو بدون اینکه وقتی برای رفتن تو قفسه ها خرج کند خیلی سریع از کنار دستش آن را به اعضا می دهد که این وسط باعث میشود روند تحویل کتاب های پر طرفدار سریع تر پیش بره و بعضی کتاب های هم مثله "باز هم نمایش بی فرهنگی ایرانی ها با حمله به صفحات چهره های معروف دنیا؟ آخه تا کی!" ممکنه خیلی طرفدار آنچنانی نداشته باشه پس آنها را داخل قفسه هایی شماره گذاری شده قرار می دهند تا بعدا کسی از این دست کتاب های کم طرفدار را خواست کتابدار از تو قفسه های کتاب آن کتاب را برایش بیاورد که این رفت و برگشت و تحویل کتاب مدت زمان بیشتری به نسبت کتابی که کنار دستش هست می برد
پس اینطوری می توان نتیجه گرفت که ما (برنامه نویس) وقتی میدانیم یک متغییر زیاد تو برنامه صدا زده میشود را بیاییم از نوع register تعریف کنیم که با این نحوه تعریف, این متغییر در صورتی که ثبات برای این متغییر فضا داشته باشد (telegram.me/Learncpp/492) داخل ثبات های ax,bx,cx و... قرار بگیرد و با این کار داریم به cpu دستور می دهیم بجای Ram (همان قفسه هایی که طرفدارهای کتاباهاش کم تره) داخل ثبات ها (جایی که کتاباهای پر طرفدار قرار داره) دنبال متغییر برود
@Learncpp
Telegram
Learning ©➕➕
#178
#storage_class #storage #class #register
✅کلاس های حافظه (Storage Class) در ++C
🔹کلاس حافظه ی ثبات (register)
🔹برای استفاده از کلاس حافظه ثبات به نکات زیر توجه کنید :
3 . توجه داشته باشیم بدلیل اینکه تعداد ثبات های پردازنده (cpu) محدود هست تا جایی…
#storage_class #storage #class #register
✅کلاس های حافظه (Storage Class) در ++C
🔹کلاس حافظه ی ثبات (register)
🔹برای استفاده از کلاس حافظه ثبات به نکات زیر توجه کنید :
3 . توجه داشته باشیم بدلیل اینکه تعداد ثبات های پردازنده (cpu) محدود هست تا جایی…
#174#storage_class #storage #class #register
✅کلاس های حافظه (Storage Class) در ++C
🔹کلاس حافظه ی ثبات (register)
🔺نحوه تعریف متغییری از نوع register
storage_class type var_name;register int i;register char ch@Learncpp
#175#storage_class #storage #class #register
✅کلاس های حافظه (Storage Class) در ++C
🔹کلاس حافظه ی ثبات (register)
🔺برای استفاده از کلاس حافظه ثبات به نکات زیر توجه کنید :
1 . از کلاس ثبات فقط برای آرگومان های می توان استفاده کرد
2 . از کلاس ثبات فقط برای متغییر های محلی می توان استفاده کرد
3 . طول عمر و محدوده متغییر هایی که از نوع کلاس حافظه ثبات تعریف می شوند شبیه کلاس حافظه اتوماتیک(آدرس طول عمر اتوماتیک) هست
4 . توجه داشته باشیم بدلیل اینکه تعداد ثبات های پردازنده (cpu) محدود هست تا جایی که می توانیم متغییر هایی را که بیشترین استفاده را در برنامه دارند را از نوع کلاس ثبات تعریف کنیم
5 . آدرس متغییر هایی با کلاس حافظه ثبات را می توان استفاده کرد
@Learncpp
#176#storage_class #storage #class #register
✅کلاس های حافظه (Storage Class) در ++C
🔹کلاس حافظه ی ثبات (register)
🔹برای استفاده از کلاس حافظه ثبات به نکات زیر توجه کنید :
1 . از کلاس ثبات فقط برای آرگومان های می توان استفاده کرد
#include <iostream>
using namespace std;
void use_register(register int test)
{cout << test;
}
int main()
{use_register(40);
return 0;
}
همانطور که در کد بالا می بینید میتوانیم کلاس حافظه register را هم به عنوان آرگومان به تابع تعریف کنیم
@Learncpp
#177#storage_class #storage #class #register
✅کلاس های حافظه (Storage Class) در ++C
🔹کلاس حافظه ی ثبات (register)
🔹برای استفاده از کلاس حافظه ثبات به نکات زیر توجه کنید :
2 . از کلاس ثبات فقط برای متغییر های محلی می توان استفاده کرد
#include <iostream>
register int test; //error
int main()
{register int test; //ok
return 0;
}
در قطعه کد بالا متغییر test را در بالای main تعریف کردیم که با این کار این متغییر به صورت عمومی در همه جا قابل شناسایی هست ولی بخاطر استفاده از register قبل تعریف متغییر با خطایی از طرف کامپایلر مواجه خواهیم شد مبنی بر اینکه نمی توان کلاس حافظه ثبات را به صورت عمومی تعریف کرد
error C2390: 'test' : incorrect storage class 'register'@Learncpp
#178#storage_class #storage #class #register
✅کلاس های حافظه (Storage Class) در ++C
🔹کلاس حافظه ی ثبات (register)
🔹برای استفاده از کلاس حافظه ثبات به نکات زیر توجه کنید :
3 . توجه داشته باشیم بدلیل اینکه تعداد ثبات های پردازنده (cpu) محدود هست تا جایی که می توانیم متغییر هایی را که بیشترین استفاده را در برنامه دارند را از نوع کلاس ثبات تعریف کنیم, بعضی وقتها هم ممکن است متغییری از نوع register تعریف کنیم ولی ثبات های پردازنده جایی برای این متغییر نداشته باشد در اینجا کامپایلر به صورت خودکار متغییری را که از کلاس حافظه register تعریف شده را به صورت کلاس حاظه اتوماتیک تعریف می کند
4 . طول عمر و محدوده متغییر هایی که از نوع کلاس حافظه ثبات تعریف می شوند شبیه کلاس حافظه اتوماتیک (telegram.me/Learncpp/486) هست
@Learncpp
Telegram
Learning ©➕➕
#172
#storage_class #storage #class #auto
✅کلاس های حافظه (Storage Class) در ++C
🔹طول عمر و محدوده کلاس حافظه auto
خب حالا بیایم محدوده و طول عمر متغییر date رو یکم با هم برسی کنیم اگه دقت کنیم وقتی کامپایلر به ابتدای مثال تابع auto_test telegram.me/Learncpp/485)…
#storage_class #storage #class #auto
✅کلاس های حافظه (Storage Class) در ++C
🔹طول عمر و محدوده کلاس حافظه auto
خب حالا بیایم محدوده و طول عمر متغییر date رو یکم با هم برسی کنیم اگه دقت کنیم وقتی کامپایلر به ابتدای مثال تابع auto_test telegram.me/Learncpp/485)…
#179#storage_class #storage #class #register
✅کلاس های حافظه (Storage Class) در ++C
🔹کلاس حافظه ی ثبات (register)
🔹برای استفاده از کلاس حافظه ثبات به نکات زیر توجه کنید :
5 . آدرس متغییر هایی با کلاس حافظه ثبات را می توان استفاده کرد
#include <iostream>
using namespace std;
int main()
{register int test=4;
cout«&test;
//or
string x = "@Learncpp";
register string &i=x;
cout«i;
return 0;
}
❌ در سایت های کپی پیس ایرانی حتی کتاب های چاپ شده (گوگولیای متقلب😑) به اشتباه نوشته اند که آدرس متغییر هایی با کلاس حافظه ثبات معنی ندارد ولی این کار ممکن هست و در مثال بالا هم به این نکته اشاره شد پس می توان آدرس متغییر هایی با کلاس حافظه ثبات را استفاده کرد
Microsoft Document
ANSI C does not allow for taking the address of a register object; this restriction does not apply to C++. However, if the address-of operator (&) is used on an object, the compiler must put the object in a location for which an address can be represented. In practice, this means in memory instead of in a register.
@Learncpp
#180#storage_class #storage #class #register
✅کلاس های حافظه (Storage Class) در ++C
🔹کلاس حافظه ی ثبات (register)
مثال) برنامه ای که تفاوت زمان اجرا متغییری که از register استفاده می کند با متغییری که استفاده نمی کند را نمایش می دهد
#include <iostream>
int main()
{for(register int i=0;i<999999999;i++);
return 0;
}
هدف از for برنامه بالا به نمایش کشیدن تفاوت زمانی هست که کار کامپایلر به اتمام می رسد اگر در تصویر (telegram.me/Learncpp/495) دقت کنید وقتی از کلاس حافظه register استفاده نکرده ایم کامپایلر به طور میانگین 5 ثانیه طول میکشد تا بدنه تابع main شامل حلقه for را اجرا کند ولی همینطور که در تصویر (telegram.me/Learncpp/496) می بینید وقتی از register برای متغییر i استفاده کرده ایم این زمان به کمتر از 1 ثانیه کاهش یافته که مزیت استفاده از کلاس حافظه ثبات را نمایش می دهد
@Learncpp
Telegram
Learning ©➕➕
#181
#storage_class #storage #class #register
✅کلاس های حافظه (Storage Class) در ++C
🔹عدم استفاده از کلاس حافظه ی ثبات برای متغییر i و نمایش زمانی که برای کامپایل, بدنه تابع main صرف شده است
@Learncpp
#storage_class #storage #class #register
✅کلاس های حافظه (Storage Class) در ++C
🔹عدم استفاده از کلاس حافظه ی ثبات برای متغییر i و نمایش زمانی که برای کامپایل, بدنه تابع main صرف شده است
@Learncpp