Is “int a;” a declaration or definition in C and in C++?

后端 未结 3 1305
情深已故
情深已故 2020-12-30 09:44

Is int a; a declaration or definition in C? Is there any difference in C++?

I was always thinking it\'s just a declaration, until today...

Is i

相关标签:
3条回答
  • 2020-12-30 10:00

    Consider:

    int a;
    

    It's a definition as well as a declaration.

    Consider the following example...

    int i;
    printf("%d", i);
    

    Some junk value will be printed. Which obviously means it's got a memory location.

    If you want to just declare a variable and not define it then go for "extern" keyword.

    Thus extern int b; is just a declaration and not a definition.

    Example:

    extern int var;
    int main(void)
    {
        var = 10;
        return 0;
    }
    

    Thus the above program will throw an error as "var" was not defined anywhere.

    0 讨论(0)
  • 2020-12-30 10:05

    A declaration describes an object, whereas a definition requests the creation of an object. All definitions are also declarations, but the reverse is not true.

    In the case of int a;, what it is depends on where it is placed in the source code:

    • Within a function, int a; is a definition - it requests the creation of an int variable with automatic storage duration (and of course also a declaration);
    • At file scope, the answer is different in C and C++. In C, int a; is a tentative definition (of which there can be more than one, as long as the types and linkage are agreeable); in C++, it is an ordinary definition with external linkage.
    • Within a struct or union specifier, int a; is a declaration of a member.
    0 讨论(0)
  • 2020-12-30 10:22

    Where does it appear in your program?

    In most contexts, it is both a declaration and definition.

    OTOH, extern int a; is a declaration only.

    0 讨论(0)
提交回复
热议问题