Pointer Depth Limits in C
In C programming, it's possible to create pointers of multiple levels, also known as multi-level pointers. These pointers allow us to indirectly access data through layers of indirection.
Question: How many levels of pointers are permitted in a single variable?
Answer:
The C standard [C11, §5.2.4.1] sets a lower limit, requiring implementations to support at least 12 levels of pointer indirection. This means that a variable can have up to 12 asterisks (*) in its declaration, modifying an arithmetic, structure, union, or void type.
For example:
<code class="c">int **************zz;</code>
However, the upper limit on pointer depth is implementation-specific. Different compilers and systems may have varying limits on the maximum number of levels of indirection that can be supported. Some implementations may impose a practical limit even below the theoretical 12-level requirement, due to factors such as performance optimizations or memory constraints.
Typically, the maximum pointer depth supported is much lower than 12 and varies from system to system. It's advisable to consult the documentation or perform empirical testing to determine the specific limit for the target platform.
The above is the detailed content of How Deep Can Pointers Go in C?. For more information, please follow other related articles on the PHP Chinese website!