C reading complex pointer expression
Before We Learn How to Read Complex Array we should first know precedence and associative .
- Precedence : Operator precedence describes the order in which C reads expressions
- Associativity : Order operators of equal precedence in an expression are applied
Before Reading Article You Should know Precedence and Associative Table
Operator | Precedence | Associative |
(),[] | 1 | Left to Right |
*,Identifier | 2 | Right to Left |
Data Type | 3 | - |
Different Terms From Table -
() | Bracket operator OR function operator. |
[] | Array subscription operator |
* | Pointer operator |
Identifier | Name of Pointer Variable |
Data type | Type of Pointer |
How to Read ?
char (* ptr)[5]
Step 1 :
- Observe Above Precedence Table
- [] and () have Same Priority
- Using Associativity , Highest Priority Element is decided
- Associativity is from Left to Right First Priority is Given to “()”
Step 2 :
- Between Pair of Brackets again we have to decide which one has highest priority ? ‘*’ or ‘ptr’ ?
- * and Identifier ptr have Same Priority
- Associativity is from Right to Left First Priority is Given to “ptr”
Step 3 :
- Assign third Priority to [].
- Write 3 under []
Step 4 :
- Here Char is Data Type
- Assign Priority 4 to char
Read it as -
ptr is pointer to a one dimensional array having size five which can store data of type char