در یک تابع نمیتوان هر کاری را با متغیرهای خودکار (متغیر های معمولی) انجام داد. برای مثال نمی توان برای ذخیره تعداد فراخوانی یک تابع ، از یک متغیر خودکار استفاده کرد. به این خاطر که هر بار که تابع فراخوانی شود این متغیر ایجاد و با پایان تابع این متغیر نابود میشود. البته میتوان از روش هایی مانند استفاده از یک ارجاع (هر چند که این کار هم مشکلات خود را دارد)، یا یک متغیر عمومی، این کار را انجام داد؛ ولی در این جا هدف ما استفاده از متغیر استاتیک برای انجام این کار است.
برای ایجاد متغیری که با پایان تابع همچنان پابرجا باشد، می توان از متغیر را در تابع به صورت static اعلان کرد. تنها تفاوت اعلان آن با یک متغیر خودکار استفاده از کلمه کلیدی static قبل از نوع متغیر است.
تابع زیر نمونه ی ساده یک تابع است که تعداد دفعاتی که تابع اعلان شده است را بر می گرداند :

int Counter ()
{
static int Count;
return ++Count;
}

تکه کد زیر عملکرد این تابع را آزمایش می کند :

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

cout << Counter();

در کد بالا در حلقه ی for ده بار تابع Counter فراخوانی شده است و در خط آخر یک بار دیگر این تابع فراخوانی شده است؛ به این ترتیب عدد 11 در خروجی چاپ می شود. اما اگر متغیر Count را از نوع متغیر static تعریف نمی کردیم، مقدار 1 در خروجی چاپ می شد.