Difficulties to understand pointer-notations *myVar / myVar* (byte*&) myVar

apparently "&" is ok by not "&"
never used this but over the years have had to futz with ptr-to-ptrs when necessary.

the 2nd ed. of The C Programming Language had a program that translates variable definitions into english. in other words, it's confusing.

 func0: 123
 func1: 123
 func1: 123
 func2: 123
 func3: 123
#include <stdio.h>

int  val   = 123;
int *pVal  = & val;

void func0 ( int    x) { printf (" %s: %d\n", __func__, x); }
void func1 ( int  * x) { printf (" %s: %d\n", __func__, *x); }
void func2 ( int ** x) { printf (" %s: %d\n", __func__, **x); }
void func3 ( int *& x) { printf (" %s: %d\n", __func__, *x); }

int
main ()
{
    func0 (val);

    func1 (&val);
    func1 (pVal);

    func2 (&pVal);

    func3 (pVal);

    return 0;
}

```[http://cslabcms.nju.edu.cn/problem_solving/images/c/cc/The_C_Programming_Language_%282nd_Edition_Ritchie_Kernighan%29.pdf](http://cslabcms.nju.edu.cn/problem_solving/images/c/cc/The_C_Programming_Language_%282nd_Edition_Ritchie_Kernighan%29.pdf)