آشنایی با عملگرهای new و delete (تعریف متغیرها و آرایه های پویا)
جلسات دوره
مهدی عباسی
مهدی عباسی هستم، مسلط به حداقل ۲۰ زبان مطرح برنامه نویسی به صورت پیشرفته، مدیر عامل شرکت آریا نرم افزار و بنیانگذار آکادمی درسمن، مسلط به تدریس دروس تخصصی کاردانی و کارشناسی کامپیوتر، پایگاه داده ها، برنامه نویسی پیشرفته، مبانی برنامه نویسی، مباحث ویژه طراحی وب و .... مشاهده رزومه
عملگرهای new و delete (تعریف متغیرها و آرایههای پویا):
در جلسه قبل در مورد آرایه و اشاره گرها صحبت کردیم. در این جلسه با عملگرهای new و delete در زبان سی پلاس پلاس آشنا میشوید.
عملگرهای new و delete به پویایی برنامه کمک میدهند. وقتی یک متغیر را تعریف میکنیم، از لحظه ایی که تعریف میشود تا پایان بلاک جاری خود فضایی از حافظه را در اختیار گرفته و حتی اگر شما از آن متغیر استفاده هم نکنید فضا اشغال شده است. در برنامههایی که به صورت کاربردی ساخته میشوند، کارایی برنامه وابستگی شدید به میزان فضای استفاده شده حافظه دارد، به این معنی که اگر شما واقعا به فضایی از حافظه در برنامه خود احتیاج ندارید، نباید آن را بیهوده نگه داشت و هر چقدر فضا آزادتر باشد امکان بالا رفتن سرعت و بهینه شدن برنامه شما بیشتر میشود.
با استفاده از عملگر new میتوان فضایی از حافظه را گرفت و برای برگرداندن حافظه گرفته شده توسط دستور new از دستور delete استفاده میکنیم. با استفاده از این عملگرها می توانیم متغیرها و آرایه های پویا داشته باشیم.
متغیرهای پویا:
مثال: در این مثال یک فضای 4 بایتی بدون نام از حافظه گرفته میشود. آدرس آن را به *p یا اشاره گر p میدهد. اشاره گر p به آن وصل و نام آن خانه *p میشود . پس با new فضایی از حافظه را میگیریم و با delete فضای گرفته شده را پس میدهیم.
Int *p=new int;
*p=145;
Cout<<*p;
Delete p;
خروجی:
آرایههای پویا:
مثال: در برنامه زیر 10 خانه از حافظه را با کلمه کلیدی new گرفته شده و مقدار آرایه را از کاربر دریافت و سپس مقادیر را چاپ میکند. و بعد از اجرای برنامه حافظه گرفته شده را با کلمه کلیدی delete پس میدهیم.
int *p=new int[10];
for ( int i=0 ; i<10 ; i++ )
{
cout<< “ Enter Number [ “ <<i<< “ ] : ” ;
cin>> a[i];
}
for ( int i=0 ; i<10 ; i++ )
{
cout<< *( a+ i )<<”\t”;
}
delete a;
خروجی:
مثال: برنامه زیر مانند برنامه قبلی میباشد، با این تفاوت که میتوانیم مقدار خانههای آرایه را از کاربر دریافت کنیم.
int n;
cout<<”Enter Number For Array : “;
cin>>n;
int *p=new int[n];
for ( int i=0 ; i<n ; i++ )
{
cout<< “ Enter Number [ “ <<i<< “ ] : ” ;
cin>> a[i];
}
for ( int i=0 ; i<n ; i++ )
{
cout<< *( a+ i )<<”\t”;
}
delete a;
خروجی:
دوست درسمنی عزیز، امیدواریم از این آموزش لذت برده باشید.
برای یادگیری این مبحث میتوانید این درس را تهیه کنید و از فایلها و ویدئو این بخش استفاده کنید.
شما عزیزان میتوانید سوالات خود را در بخش انجمن پرسش و پاسخ مطرح کنید و همچنین منتظر انتقادات و پیشنهادات مفید شما در بخش نظرات هستیم تا ما را در کیفیت بهتر آموزشهایمان یاری کنید.
با امید موفقیت و شادی برای شما دوست درسمنی عزیز
انجمن ++C کاران درسمن
نظرات دانشجویان
سلام خسته نباشید . ببخشید جسارتا توی مثال هایی که گذاشتید اسم پوینتر و آرایه یکی نیست . بالا p ولی پایین ما ارایه aرو داریم . فکر میکنم اینجا یه چیزی مشکل داره.
سلام صالح جان، ممنون از همراهیتون، اگر حس میکنید مشکلی در برنامه نویسی دارید می توانید آن را در انجمن برنامه نویسی درسمن مطرح کنید و اگر حس میکنید مشکل از محتوای درس هست دوباره اینجا کامنت بزارید تا بنده از مدرس پیگیری کنم براتون.
نظر شما در تصمیم دیگران اثرگذار است.
لطفا برای همراهان درسمن و بهتر شدن دوره نظر خود را بنویسید.