如果我們有以下代碼,當我們調用函數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