Precedence of the * and []Operators

The array subscript operator, [], has a higher precedence than the pointer dereference operator, *. Therefore, the following snippet declares an array of 10 pointers to char, not a pointer to an array of 10 characters:

 char * p2 [10];

You can read the declaration as follows: because the array subscript has a higher precedence than the * operator, p2 is an array of 10 elements. The type of the elements is ‘pointer to char’ or char *. Now try to parse the following declaration:

 char ** p3 [10];

Here again, operator [] has the highest precedence, therefore we know that p3 is an array with 10 elements. The type of the array’s elements is ‘pointer to pointer to char’ or char **.

Share the Post:
Share on facebook
Share on twitter
Share on linkedin

Overview

Recent Articles: