Pointer arithmetic allows pointer variables to be manipulated using arithmetic operations. Some key rules include:
1. A pointer variable can be assigned the address of an ordinary variable using the & operator. Casting is possible between different pointer types.
2. A pointer variable can be assigned the value of another pointer variable if they are of the same type.
3. A pointer variable can be assigned the null value NULL.
When manipulating pointers, the type of the pointer variable determines the amount of increment or decrement from arithmetic operations like ++. Pointers can only be subtracted if they point to elements within the same array.