 <p>A <code>typedef</code> defines an alias for a type.</p> <p>In your example <code>typedef Tank_Config *Tank_Config_Ptr;</code> Declares <code>Tank_Config_Ptr</code> as an alias for <code>Tank_Config *</code>.</p> <p>So the following definitions are equivalent.</p> <pre><code>Tank_Config *ptr1; Tank_Config_Ptr ptr2; </code></pre> <p>That being said, it is considered bad practice to hide a pointer inside of a <code>typedef</code>. It masks the fact that a pointer is being used and can cause confusion to readers of the code.</p>