Interview Questions

What's the difference between these two declarations?

C Interview Questions and Answers


(Continued from previous question...)

What's the difference between these two declarations?

Q: What's the difference between these two declarations?
struct x1 { ... };
typedef struct { ... } x2;

A: The first form declares a structure tag; the second declares a typedef. The main difference is that the second declaration is of a slightly more abstract type--its users don't necessarily know that it is a structure, and the keyword struct is not used when declaring instances of it:

x2 b;
Structures declared with tags, on the other hand, must be defined with the
struct x1 a;
form.
(It's also possible to play it both ways: typedef struct x3 { ... } x3;
It's legal, if potentially obscure, to use the same name for both the tag and the typedef, since they live in separate namespaces. )

(Continued on next question...)

Other Interview Questions