如果我们有以下代码,当我们调用函数f
时,不会采用变量b
的内存。但是如果功能f
将具有原型void f(int* &a)
那么内存将被分配。这怎么可能?不同的传递参数,不同的输出
#include <iostream>
using namespace std;
void f(int* a)
{
a = new int[10];
a[0] = 55;
}
int main()
{
int *b;
f(b);
return 0;
}
编辑: 那么我的主要想法,但为什么仍然是可能的呢?
void f(int a[])
{
a[0] = 5;
}
int b[] = {1,2,3,4,5};
f(b);
//The value of b[0] will be 5 after the end of function call
因为你会传递一个引用吗?你应该阅读一本关于C++的书。 –
[C++中指针变量和引用变量之间的区别是什么?](http://stackoverflow.com/questions/57483/what-are-the-differences-between-pointer-variable-and-reference-可变in-c) – user657267
内存分配*无论*。它是否在'main()'中看到了白天的亮点,这是区别。任何有关C++的书籍都将涵盖参考资料。他们中的大多数甚至会相当准确地完成。 – WhozCraig