为什么是
int i;
int *p = &i;
对,同时
int i, *p;
*p = &i;
是错的?
*声明(int *p = &i)和表达式( )中使用的运算符有什么区别*p = &i吗?
为什么是
int i;
int *p = &i;
对,同时
int i, *p;
*p = &i;
是错的?
*声明(int *p = &i)和表达式( )中使用的运算符有什么区别*p = &i吗?
在您的第二个代码块中,这是:
int i, *p;
*p = &i;
可以固定为:
int i, *p;
p = &i;
p仍然声明为指向 an 的指针int,但您想存储 to 的i地址p。
在您的代码中,存储指向内存中某个区域*p = &i的地址(因为您没有初始化它)。ip
是的,有区别 - 第一种形式*是类型定义的一部分int *。
在第二种形式中,它是一个一元解引用运算符。第二个表达式也存在错误 - 当您分配给指针时,无需取消引用它。
(*p)评估为 typeint而p评估为 type int *; &i计算为 type int *。因此,将 int 变量 i 的地址分配给指针 p 应该读取p=&i;