در واقع برای تعریف کردن اشارهگر به const
یا اشارهگر const
به شی سه کد زیر ممکنه استفاده بشه
A * const
const A *
A const *
مورد اول اشارهگر ثابت به یک شی دلخواه هست. یعنی اشارهگر قابل تغییر نیست ولی مقدار اون که یه شی معمولی هست قابل تغییره
int x = 10;
int * const px = &x;
*px = 11; // it's OK
px++; // error
دو مورد دیگه اشارهگر به شی ثابت هست یعنی خود اشارهگر میتونه تغییر کنه اما شیای که بهش اشاره میشه قابل تغییر نیست.
int x = 10;
const int * px = &x;
*px = 11; // error
px++; // it's OK
int x = 10;
int const * px = &x;
*px = 11; // error
px++; // it's OK
چیزی که باید دقت کرد این هست که const
بودن خصوصیت ذاتی خود متغیر مورد اشاره نیست. در مثالهای بالا x
به صورت const int
تعریف نشده بلکه به صورت int
تعریف شده است. بلکه اشارهگر هنگام اشاره کردن متغیر مورد اشاره را به صورت const
تعریف میکند. یعنی مقدار متغیر از طریق اشارهگر قابل تغییر نیست ولی ممکنه خود متغیر رو بشه مستقیماً تغییر داد.
هیچ پژوهش انسانی نمیتواند ادعای علمی بودن داشته باشد، مگر اینکه از برهان ریاضی برخوردار باشد (لئوناردو داوینچی)