0
   int a=4;
   int *p=&a;

这种语法是正确的,但是当我们这样写时

   int a;
   int *p;
   *p=&a;

第三行是一个错误,我知道但是,为什么可以在第一个代码中这样做

   int *p=&a;

当我们通过引用函数传递值时,我们甚至会这样做......感谢您的回复

4

3 回答 3

4

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

于 2013-09-07T16:07:00.633 回答
3

类型是int *。因此,如果一般模式是:

T a;
T b;
a = b;

然后与T = int *,模式是:

int * p;
p = &n;     // n is an int

类型说明符中的“ *”不应与几乎完全不相关的一元运算符(也称为“ ”)混淆。 int **

于 2013-09-07T16:04:03.690 回答
1

当你输入

    int *p;

您正在声明指针 p。在声明后再次使用 * 将取消引用指针。所以

    *p = &a;

会说“指针 p 中的值 = 对值 a 的引用”

正确的解决方案是

    int *p;
    p = &a
于 2013-09-07T16:04:36.520 回答