The sequence && is parsed as the logical AND operator. According to the Maximal Munch parsing principle, it’s never construed as two & (address of) operators:
void func (char ** pp);char c;func (&&c); // parse error, && treated as logical AND
If you want to pass the address of c’s address (i.e., a pointer to a pointer), use an auxiliary variable that holds the address of c and then pass its address to func():
char * p=&c;func (&p); // OK, address of address of c