int a=4;
int *p=&a;
这种语法是正确的,但是当我们这样写时
int a;
int *p;
*p=&a;
第三行是错误,我知道但是,为什么可以在第一个代码中执行此操作
int *p=&a;
当我们通过引用函数传递值时,我们甚至会这样做... 谢谢你的回复
答案 0 :(得分:3)
类型为int *
。因此,如果一般模式是:
T a;
T b;
a = b;
然后使用T = int *
,模式为:
int * p;
p = &n; // n is an int
类型说明符 *
中的“int *
”不应与几乎完全不相关的一元运算符混淆,后者也称为“ *
”。
答案 1 :(得分:3)
int *p=&a;
,
p
),它是一个指向int a
的地址指定为p
等效代码
int *p; // declare a pointer variable 'p'
p = &a; // assign the address of a to 'p'
第三行*p=&a;
是一个错误,因为*p
表示地址为p
的指针的(整数)值,值为int
而不是address of an int
(即不是pointer to an int
)
答案 2 :(得分:1)
int *p;
你正在声明指针p。 在声明之后再次使用*将取消引用指针。 所以
*p = &a;
会说“指针p中的值=对值a的引用”
正确的解决方案是
int *p;
p = &a