1.结论
- int *p =&a, 正确写法。
- *p = &a, 错误写法。
- *p = a, 正确写法。
- p = &a, 正确写法。
2.原因
"&“一直都是取地址符,而” * “在1中只是声明变量,在2,3,4中则是取值符,两者含义不同。
(1)在1中,” * "是声明变量,即告诉计算机,我这个P是指针类型的变量,是要存放地址的。为了便于理解,我们可以和看布尔型变量的定义方式对比:
int *p = &a;\\可以把int *p理解为(int*)p
bool p =a;\\把(int*)与bool类比
而在另外三种情况中,&与 * 就分别是取地址运算符和取值运算符了,是一对相反的运算符。