تعریف دو متغیر Local و Global همنام و دسترسی به متغیر Global در زبان سی

در زبان سی برای دسترسی به متغیر سراسری‌ای (Global) که متغیر محلی (Local) همنام با آن نیز وجود دارد، باید با استفاده از آکولادهای باز و بسته (Brace) یک بلاک کد ایجاد کنید و درون این بلاک، همان متغیر Global را بصورت extern تعریف کنید؛ مانند کد زیر:

#include <stdio.h>

int foo = 10;

int main()
{
    int foo = 20;
    printf("Local \"foo\":  %d\n", foo);

    {
        extern int foo;
        printf("Global \"foo\": %d\n", foo);
        foo = 11;
        printf("Global \"foo\": %d\n", foo);
    }

    printf("Local \"foo\":  %d\n", foo);

    return 0;
}

خروجی کد بالا:

Local “foo”: 20
Global “foo”: 10
Global “foo”: 11
Local “foo”: 20

در زبان سی++ متغیر Global براحتی با استفاده از اپراتور Scope Resolution (::) قابل دسترسی می‌باشد (foo::). این اپراتور در زبان سی موجود نیست.