آدرس دادهها
هر متغیری دارای آدرس منحصر به فردی است که محل آن متغیر را در حافظه مشخص میکند. در بعضی کاربردها بهتر است که برای دستیابی به متغیر به جای نام آن متغیر، از آدرس آن استفاده کرد. برای به دست آوردن آدرس متغیر، اپراتور ampersand یا & به کار میرود. برای مثال، فرض کنید که متغیر k از نوع long int و آدرس آن ۱۰۰۴ باشد، دستور Ptr = &A; مقدار ۱۰۰۴ (آدرس متغیر A) را در متغیر Ptr ذخیر میکند که البته باید Ptr از نوع اشارهگر توصیف شده باشد که به متغیری از نوع long int اشاره میکند.
مثال برنامه ساده زیر مقدار و آدرس متغیر A را چاپ میکند.
# include <stdio.h>
main ()
{
int A = 5 ;
printf (” The value of A is: %d\n” , A) ;
printf (” The address of A is: %p\n” , &A) ;
}
یادآور میشویم که در تابع printf برای چاپ آدرس متغیر از کد فرمت %p استفاده شده است. این کد فرمت ممکن است در کامپایلرهای قدیمی وجود نداشته باشد.
همچنین میتوان قطعه برنامه بالا را به صورت زیر نیز نوشت.
# include <stdio.h>
main ()
{
int A = 5 ;
int *pA ;
pk = &A ;
printf (“the address of A is: %p\n” , pA) ;
}
خروجی این برنامه نیز مشابه قبلی خواهد بود.
از مطالب مطرح شده میتوان نتیجه گرفت که عملگر ستاره یعنی * به دو مفهوم جداگانه به کار میرود.
الف) در معرفی متغیرهای عملگر، اشارهگر در سمت چپ متغیرهای مورد نظر قرار میگیرد، مانند مثالهای زیر.
int *p1 , *p2 , *p3 ;
float *p4 , *p5 ;
char *p6 , *p7 ;
ب) برای دستیابی به مقدار متغیری که آدرس آن در متغیر اشارهگر قرار دارد، مانند
p1 = &a ;
*p1 = a ;