c++ - Pointer declaration with and without struct? -
this question has answer here:
- why c need “struct” keyword , not c++? 6 answers
what's difference between:
struct name{ int example; name *next; }; struct name *next= null;
...and
name *next=null;` (defined after data structure, when linked list still empty) ?
first of data member name next in structure
struct name { int example; name *next; }; and variable same name declared after structure example
struct name *next = null; are 2 different entities.
the last declaration not initialize null data member of object of structure. declares pointer object of type of structure.
now difference between 2 declarations
struct name *next = null; and
name *next = null; in first 1 there used so-called elaborated type name struct name. advantage compared second declaration object, enumerator or function declared same name name hide declaration of structure. example
struct name { int example; name *next; }; enum { name, noname }; here enumerator name hides data type struct name , if write example
name *next = null; then compiler issue error.
but if use elaborated name
struct name *next = null; then code compiles because compiler knows name in declaration struct name.
another important difference.
consider following code snippet
int main() { struct name { int example; name *next; }; { name *next = null; } } in progam declaration within inner code block declares pointer of type of struture declared in outer code block.
now rewrite program
int main() { struct name { int example; name *next; }; { struct name *next = null; } } in case declaration in inner code block introduces new type struct name hides structure declaration in outer code block.
Comments
Post a Comment