#include <iostream>
using namespace std;
void fn(int* input_ptr) {
int *ptr2 = input_ptr;
cout << "pointer 2 is " << *ptr2 << endl;
}
int main() {
int *ptr1;
*ptr1 = 7;
fn(ptr1);
}
該實施例的工作原理,正如我將指針傳遞給函數,並分配給該函數內的暫時指針,結果表明指針2也是7. 然而,C++指定指向指針
#include <iostream>
using namespace std;
int main() {
int *ptr1;
*ptr1 = 7;
int *ptr2;
*ptr2 = ptr1; // or I have also tried *ptr2 = *ptr1
cout << "pointer 2 is " << *ptr2 << endl;
}
相同的步驟在主函數中不起作用。我知道你可以使用不帶星號的地址ptr2 = ptr1,它可以工作。
但是,在第一個示例中,我可以直接將指針作爲函數參數指定給帶有星號(或稱爲取消引用?)的新指針,但在第二個示例中,我無法在主函數中執行此操作。
任何人都可以幫助解決這個問題嗎?欣賞你的時間。
'這個例子有效,' - 你真幸運。 'ptr1'沒有指定內存地址。您需要使用'new'分配內存 –