#includeint main() { int a; // 定义一个 int 型的变量(a是变量名)。它接收具体的数值。 int *b; // 定义一个 int 型的指针变量(b是变量名)。它只接收int型数值的地址,而非具体的数值。 // (你可以这么理解:在变量名前加个 * 号就是指针变量,但是变量的名字还是 * 号后面的) a = 2; // 给a传值(传的是一个具体的数值) b = &a; // 给b传值(传的是一个地址) printf("%d, %pn", a, b); // 因为b里面存储的地址,所以输出的也是地址。 printf("%dn", *b); // 这里的 *b 是指指针变量b 所指向的变量(也就是b存储的地址所对应的具体数值) *b = 5; // 把5赋给*b,如果b之前有指向一个地址(b被赋值了),那么相当于对哪个地址里的值进行赋值,即a=5; 它会改变a的值(实际上就是改变了存储地址所对应的数值) //如果 b 没有被赋值,那么这样使用就是不合法的。(一定要注意!) // 指针变量不同处在于:指针变量存放的只能是变量的地址。而像 int a=2; 它存放的是具体的数值。 // 指针变量本身也是有地址的。 printf("%d, %d, %p, %pn", a, *b, &a, b); return 0; }



