یه مثال دیگه:
کد:
long int a , *b , c ;
a = 69355 ;
b = &a ;
c = *b ;
عبارت b* رو بخونید: "محتوای محلی که متغیر b بهش اشاره داره". پس خط آخر مقدار ۶9355 رو به c اختصاص می ده (به کاربردهای متفاوت اپراتورهای & و * دقت کنید). فرض کنیم بایتهای شماره 1000 تا 1003 برای ذخیره کردن مقدار متغیر a استفاده شده باشن (متغیر از نوع long int در حالت استاندارد چهار بایت اندازه داره). پس اشاره گر b مقدار 1000 رو داره. وقتی برنامه به خط آخر می رسه باید محتوای محلی رو که b به اون اشاره داره در c قرار بده. اما از کجا متوجه می شه که علاوه بر بایت شماره 1000 باید سه بایت بعدی رو هم استفاده بکنه؟ و چطور متوجه می شه که باید این چهار بایت رو به صورت عدد صحیح تفسیر کنه (ممکن بود این چهار بایت مربوط به یه عدد اعشاری چهار بایتی float می بود)؟ به همین خاطره که نوع اشاره گر تعیین می شه. وقتی اشاره گر b از نوع long int مشخص شده برنامه متوجه می شه که باید از چهاربایت به صورت عدد صحیح استفاده بکنه. اگه تعیین نوع برای اشاره گر انجام نمی شد مشکلات زیادی به وجود می اومد. البته ما اشاره گرهای بدون نوع (void) هم داریم ، که کاربرد اختصاصی خودشون رو دارن.