为什么当函数接受指针时,我们传递特定变量的地址,而不是指针?

  • 本文关键字:指针 变量 地址 我们 函数 c++
  • 更新时间 :
  • 英文 :


例如:

void foo(int *ptr) {
some code///
}
int main() {
int x = 5;

foo(&x);
}

而不是this:

void foo(int *ptr) {
some code///
}
int main() {
int x = 5;
int *ptr = &x 
foo(ptr);
}

我读了关于这个的文章,但是所有的东西都说"我们正在传递地址",而不是一个指针,我不明白为什么,请告诉我

下面的代码段很好(合法/有效),因为变量ptr是一个指针,这意味着它保存着int类型的地址(在本例中)。这正是foo所期望的参数类型。

void foo(int *ptr) {
// some code///
}
int main() {
int x = 5;
int *ptr = &x;//ptr is a pointer to an int 

foo(ptr);//this works because foo expects a pointer to an int
}

您的示例(修改后)

int *ptr = &x 
foo(ptr);

是完全有效的,并且与foo(&x)完全相同。唯一的区别是声明了一个int*类型的额外变量。编译器通常会将其优化掉,因此两者之间没有真正的区别。

指针保存变量的内存地址。如果一个函数接受一个指针,你实际上是在传递它所指向的变量的地址,所以传递一个指针实际上是在传递一个地址。这两种情况都是合法的,并且做同样的事情。

相关内容

  • 没有找到相关文章

最新更新