int a=4;
int *p=&a;
这种语法是正确的,但是当我们这样写时
int a;
int *p;
*p=&a;
第三行是一个错误,我知道但是,为什么可以在第一个代码中这样做
int *p=&a;
当我们通过引用函数传递值时,我们甚至会这样做......感谢您的回复
,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
,该值是 anint
而不是 a address of an int
(即,不是 a pointer to an int
)
类型是int *
。因此,如果一般模式是:
T a;
T b;
a = b;
然后与T = int *
,模式是:
int * p;
p = &n; // n is an int
类型说明符中的“ *
”不应与几乎完全不相关的一元运算符(也称为“ ”)混淆。 int *
*
当你输入
int *p;
您正在声明指针 p。在声明后再次使用 * 将取消引用指针。所以
*p = &a;
会说“指针 p 中的值 = 对值 a 的引用”
正确的解决方案是
int *p;
p = &a