C++ 将变量的地址传递给其他函数

C++ 将变量的地址传递给其他函数,c++,C++,好的,如果我声明/初始化一个变量,然后把它的地址传递给另一个函数,这和说int*n=&I一样吗?换句话说,将地址传递给另一个函数本身是否会创建指针?我几乎想对自己说“是的,这是一个愚蠢的问题”,但我只是想确保我正确地理解了这一点 foo(int* n) { //do something } main () { int i = 5; foo(&i); } 是的,您的假设是正确的,变量int*n本身有一个唯一的地址,您可以使用&n获得该地址,这是完全正确的。&i创建了一

好的,如果我声明/初始化一个变量,然后把它的地址传递给另一个函数,这和说
int*n=&I
一样吗?换句话说,将地址传递给另一个函数本身是否会创建指针?我几乎想对自己说“是的,这是一个愚蠢的问题”,但我只是想确保我正确地理解了这一点

foo(int* n) {
    //do something
}


main () {
  int i = 5;
  foo(&i);
}

是的,您的假设是正确的,变量int*n本身有一个唯一的地址,您可以使用&n

获得该地址,这是完全正确的。
&i
创建了一个指针。从C++标准,[Exp.una.op]/3“一元<代码>和/>代码>运算符是对它的操作数的指针。如果主要语言工作得像赋值一样,则最多传递参数。@ ELAZAR PoeNoTiT:在C++中,它像初始化,而不是赋值;安第斯密斯C++没有“栈”、“跳”和“子例程”的概念。这些是实现细节,不是标准化语言的一部分。在实践中,这个函数很可能是内联的,而这些都不会发生。创建指针是因为“指针”是“地址”的类型。由于参数
int*
需要指针类型的对象,因此也会创建指针类型的对象(在“如同”规则下)。是的,在函数定义中定义参数就是创建一个与您使用的函数相关的局部变量。在这种情况下,变量实际上包含地址,因此看起来可能很混乱,但是想象一下,如果n=0将变量设置为空,而*n=0将外部变量的值设置为零,那么会有什么不同。