From my understanding, when you declare something like char str[] = 'abc', it by default becomes a pointer to the first address of the array, so there is no need to specify the * syntax. However, sometimes I see something like in the below code, where it uses both [] and *. What exactly is going on here? I know that the [] operator has higher precedence than the * operator. So first thing it does I assume is point to the first address in the array, and then the * points again to the first address?