نوعی از متغیر ها در زبان C وجو دارند به نام متغیر های اشاره گر.هر متغیر اشاره گر به نوع خاصی از داده اشاره می کند. در برنامه باید به کامپایلر اعلان شود که نوع داده ای که اشاره گر به آن اشاره می کند چیست.
-در زبان پاسکال، علامت (^) قبل از نوع داده قرار می گیرد تا متغیری را به عنوان اشاره گر معرفی کند.
-در زبان C، علامت (*) برای نشان دادن اشاره گر بودن متغیری اضافه می شود. علامت ستاره را می توان بلافاصله بعد از نوع داده یا قبل از نام متغیر قرار داد.

مثال(Pascal). متغیر اشاره گرPx به داده صحیحی اشاره می کند:

Px : ^Integer;

مثال(C). اشاره گر k به یک داده صحیح اشاره می کند:

int* k;  یا  int *k;

علامت ستاره به معنی داده ای است که k به آن اشاره می کند.

نکته مهم هنگام کار با اشاره گرها مقدار دهی اولیه آنهاست. اگر یک اشاره گر را فقط اعلان کنید و بدون مقداردهی از آن استفاده کنید به محل نامعینی از حافظه اشاره کند و این می تواند مشکلاتی را روی سیستم تولید کند.
یک روش کلی مقداردهی اشاره گر با مقدارصفر یا تهی (ثابت NULL در زبان C و ثابت nil در زبان پاسکال) است.

int *x=0;   یا  int *x=NULL;

راه معمول دیگر نسبت دادن آدرس یک متغیر استاندارد، توسط عملگر آدرس، به یک متغیر اشاره گر است.
مثال(C). به برنامه زیر دقت کنید.

#include <iostream.h>
void main()
{
int i;
int* j;
j = &i;
i = 10;
cout << “i is ” i;
cout << “n j is ” << j << “n”;
}

آدرس متغیر i توسط عملگر & بدست آمده و به اشاره گر j نسبت داده می شود، بنابراین j به متغیر i اشاره می کند. i یک متغیر صحیح است و ۴ بایت حافظه را اشغال می کند، j به اولین بایت از این ۴ بایت اشاره می کند.

وقتی مقدار متغیر i چاپ می شود عدد ۱۰ نمایش داده می شود. با چاپ متغیر اشاره گر j یک عدد طولانی تر نشان داده می شود که آدرسی در حافظه است.
نکته. نوع اشاره گر و متغیری که به آن اشاره می کند باید یکسان باشد.