将指针传递给函数

Pass pointer to function

我正在学习指点

int main() {
   int a = 2;
   cal(&a);
}

void cal(int* a) {
   //Here:
  //What does the value of a mean?
  //What does the value of &a mean?
}

如你所见,在main()中,我将a的地址传递给函数cal(int* a)

我想知道 cal(int*) 中的值 a&a 是什么意思?

cal(int*)中的a是否代表main()a的地址?

难道cal(int*)中的&a只代表指向main()a的地址的地址吗?

What does the value of &a mean?

获取a的地址。这是通过将地址运算符 & 应用于 int 变量 a.

来完成的

What does the value of a mean?

里面cal() a表示调用cal()时传入的int的地址。

在您的代码中,您有两个作用域:

在主作用域上 'a' 是一个值为 2 的变量,以及一个指向它的指针。 您将指针传递给函数 'cal'.

在 cal 作用域上 'a' 是作为 main 函数的输入给出的指针。 &a 将是指向指针的指针,相反 *a 是指针指向的值(即 2)。

a main() 函数中的变量是整型变量。 a 函数 cal() 中的参数变量是指向整数的指针,它将指向或保存 main() 中变量 a 的地址。

cal(int*)中的a是否代表main()中a的地址?

cal(int*)中的&a是否只代表指向main()中a的地址的地址?

cal() 中的

&a 表示 cal() 中变量 a 的地址,它保存 main() 函数中 a 的地址。

从你的例子来看,你可能对相同变量的使用感到困惑names.But它们的范围仅限于各自的功能并且它们不冲突。