صفحه اصلی

صفحه شخصی مسعود اقدسی‌فام
الگوریتمستان - آموخته‌های من از دنیای برنامه‌نویسی و طراحی الگوریتم
تعداد امتیازهای ثبت شده:  513

میانگین امتیازهای ثبت شده:  4.29 از 5.00
عبارت مورد نظر:

     

الگوریتمستان آشنایی با مفهوم و عملکرد اشاره‌گرها در زبان برنامه‌نویسی ++C و ارائه مثالهایی از کاربرد آن

الگوریتمستان معرفی متغیرهای مرجع در زبان برنامه‌نویسی ++C و آشنایی با مهمترین کاربردهای آنها

الگوریتمستان آشنایی با مفهوم سربارگذاری عملگرها در زبان ++C

الگوریتمستان بررسی مفهوم و روش پیاده‌سازی لیست پیوندی و توابع مرتبط آن به زبان برنامه‌نویسی ++C

الگوریتمستان آشنایی با صف اولویتی (Priority Queue)، کاربردها و نحوه پیاده‌سازی آن

الگوریتمستان آشنایی با الگوریتم استراسن برای محاسبه حاصلضرب ماتریس‌ها

الگوریتمستان آشنایی با درخت جستجوی دودویی (Binary Search Tree) و عملیات جستجو و درج و حذف گره

الگوریتمستان بررسی مساله برج هانوی و روش‌های حل بازگشتی و غیربازگشتی آن

الگوریتمستان بررسی روش‌های مختلف محاسبه ضرایب دوجمله‌ای نیوتن یا ترکیب دو عدد با قطعه کد به زبان برنامه‌نویسی ++C

الگوریتمستان آشنایی با روش مرتب‌سازی سریع، همراه با قطعه‌کدهای نمونه به زبان برنامه‌نویسی ++C

الگوریتمستان آشنایی با روش مرتب‌سازی ادغامی با قطعه کدهایی به زبان برنامه‌نویسی ++C

الگوریتمستان بررسی سوال مسابقات برنامه‌نویسی Turn for MEGA، و راه حل آن

الگوریتمستان پنج نکته آموزنده در مورد برنامه‌نویسی به زبان برنامه‌نویسی ++C


»   کلاس‌های حافظه در ++C جمعه، 15 خرداد ماه 1388، ساعت 14:15

مطلبی که می‌خوانید، ویراست دوم مطلبی است که نسخه اولیه آن با عنوان "کلاسهای حافظه" از طریق وب‌سایت برنامه‌نویسی و طراحی الگوریتم منتشر شده بود.

زبان برنامه‌نویسی ++C از چهار کلاس حافظه مختلف برای تعریف متغیرها پشتیبانی می‌کند.

 

کلاس حافظه اتوماتیک (auto):

این کلاس اصلی‌ترین کلاس حافظه زبان ++C محسوب می‌شود. متغیرهایی که توسط این کلاس تعریف می‌شوند، با خروج از محدوده تعریف به طور خودکار از بین می‌روند. بنابراین تمامی متغیرهای عادی از این نوع کلاس هستند. یعنی شما برای مشخص کردن کلاس حافظه اتوماتیک نیاز به انجام کار خاصی ندارید. اما برای تاکید بر اتوماتیک بودن کلاس حافظه، می‌توانید از کلمه کلیدی auto استفاده کنید. به عنوان نمونه، دو عبارت زیر هم ارز هستند:

 

int n;

auto int n;

 

کلاس حافظه استاتیک (static):

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

 

#include< iostream.h >

void func( )

{

  static int y = 1;

  cout << y << "\t";

  y *= 2;

}

 

void main( )

{

  func( );

  func( );

  func( );

}

 

خروجی برنامه:

 

1 2 4

 

در اولین فراخوانی تابع func، برای متغیر y حافظه اختصاص داده می‌شود. خط آخر تابع مقدار 2 را در y قرار می‌دهد. اما با خروج از تابع متغیر از بین نمی‌رود. بار بعد که تابع فراخوانی شد، مقداردهی اولیه y (یعنی 1) در نظر گرفته نمی‌شود. در نتیجه عدد 2 چاپ می‌شود و الی آخر. حافظه اختصاصی برای y فقط زمانی آزاد خواهد شد که اجرای برنامه تمام شود.

توجه: استفاده از دستور جداگانه برای مقداردهی اولیه متغیر استاتیک خطای منطقی محسوب می‌شود:

 

#include < iostream.h >

 void func( )

{

  static int y;

  y = 1;

  cout << y << "\t";

  y *= 2;

}

 

void main( )

{

  func( );

  func( );

  func( );

}

 

خروجی برنامه:

 

1 1 1

 

کلاس حافظه ثبات (register):

زمانی که متغیری از نوع کلاس حافظه ثبات تعریف شود، حافظه برای متغیر به جای حافظه اصلی (RAM) از حافظه پردازنده مرکزی (CPU) اختصاص داده می‌شود. در نتیجه سرعت خواندن و نوشتن متغیر بالا می‌رود. از این نوع متغیرها عموما برای شمارنده حلقه‌ها استفاده می‌شود، تا سرعت اجرای حلقه بالاتر رود.

 

‌void main( )

{

  register int i;

  for( i = 0 ; i < 10 ; i++ )

  {

    cout << i * i << "\t";

  }

}

 

توجه: استفاده از کلاس حافظه ثبات یک درخواست محسوب می‌شود. یعنی ممکن است بنا به هر دلیلی تخصیص حافظه از CPU امکان نداشته باشد. در این حالت کلاس حافظه در نظر گرفته نمی‌شود.

 

کلاس حافظه خارجی (extern):

پروژه‌های بزرگ همیشه از چندین فایل تشکیل می‌شوند. برای دسترسی به متغیری از فایل دیگر باید از کلاس حافظه خارجی استفاده کنید. به عنوان مثال:

 

file1:

int n;

 

file2:

extern int n;

cout << n;

 

توجه:

1 - کلاس حافظه خارجی برای متغیرهای عمومی استفاده می‌شود.

2 - دو فایلی که با هم تبادل متغیر می‌کنند باید از یک پروژه باشند.

‌چاپ مطلب
نسخه قابل چاپ مشاهده نسخه قابل چاپ و ارسال به چاپگر
به اشتراک گذاری مطلب
FriendFeed       Twitter       Facebook       Cloob
آمار
تعداد امتیازهای ثبت شده:  7 ،  میانگین امتیازهای ثبت شده:  3.57 از 5.00
‌برچسب‌ها
برنامه‌نویسی ++C
امتیاز مطلب
1 2 3 4 5
ارسال پیام
» parvin

شنبه، 20 فروردین ماه 1390، ساعت 10:11
salam khaste nabashid
ye soal dashtam az khedmate u
فرق بين متغيير خارجي با متغيير عمومي چيست؟
ممنون ميشم هرچه سريعتر جواب بديد.

» مسعود اقدسی‌فام

شنبه، 20 فروردین ماه 1390، ساعت 19:32
متغیر عمومی در خارج از هر تابعی معرفی شده و در دسترس تمام توابع همون فایل هست. اگر بخوایم از این متغیر در فایل دیگه‌ای از پروژه استفاده کنیم باید اون رو با عنوان خارجی در این فایل هم معرفی کنیم. در بالا این روش توضیح داده شده.

» نادر

چهارشنبه، 7 دی ماه 1390، ساعت 10:48
تعریف کلاس صف در c++
باتشکر



دوست عزیزم، لطفا قبل از ارسال پیام به موارد زیر توجه داشته باشید:

1- تا حد ممکن از حروف فارسی برای نگارش پیام خود استفاده کنید. امکان ارسال پیام لاتین و کدهای برنامه‌نویسی با چیدمان چپ به راست نیز وجود دارد.
2- به درخواست پروژه‌های آماده و موارد مشابه پاسخ داده نخواهد شد.
3- از قرار دادن هرگونه نشانی یا شماره تماس در متن پیام خودداری کنید.
4- از ارسال پیام‌های تبلیغاتی خودداری کنید.
5- از ارسال سوال و پیام غیرمرتبط با مطلب ارائه شده خودداری کنید.
6- لطفا نظر خود را در مورد مطلب ارائه شده، با ثبت امتیاز مشخص نمایید.

پیشاپیش از همکاری شما سپاسگذارم.


نام:  
پست الکترونیک
وب‌سایت:
متن پیام: