char *a => *a is a char char a[3] => a[i] is a char char f(char) => f(c) is a char char (*f)(char) => (*f)(c) is a char (short form: f(c))
sizeof(a[3]) is not evaluating a[3], so it also isn't UB.