Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Variable declaration vs definition

Tags:

c

I was reading some info on externs. Now the author started mentioning variable declaration and definition. By declaration he referred to case when: if a variable is declared the space for it is not allocated. Now this brought me to confusion, because I think MOST of the times when I use variables in C, I am actually both defining and declaring them right? i.e.,

int x; // definition + declaration(at least the space gets allocated for it)

I think then that only cases in C when you declare the variable but not define it is when you use:

extern int x; // only declaration, no space allocated

did I get it right?


1 Answers

Basically, yes you are right.

extern int x;  // declares x, without defining it

extern int x = 42;  // not frequent, declares AND defines it

int x;  // at block scope, declares and defines x

int x = 42;  // at file scope, declares and defines x

int x;  // at file scope, declares and "tentatively" defines x

As written in C Standard, a declaration specifies the interpretation and attributes of a set of identifiers and a definition for an object, causes storage to be reserved for that object. Also a definition of an identifier is a declaration for that identifier.

like image 147
ouah Avatar answered Sep 12 '25 13:09

ouah