Logical operators evaluate to 1 if true and 0 if false. An operator can only evaluate its operands if they are all the same data type. All unary operators have the same precedence and associativity. C doesn't provide a separate string data type. Array indexes begin at 0.
Variables represent storage, pointers represent addresses.
Function arguments are passed by value. To make global changes in a function's argument requires that pointers to those arguments be passed to the function. An external variable must have only one definition, but can have many declarations. Once declared, a structure is just like a data type. A structure variable must be to the left of a .