簡體   English   中英

我可以修改作為參數傳遞的指針的目標嗎?

[英]Can I modify the target of a pointer passed as parameter?

函數是否可以更改作為參數傳遞的指針的目標,以使效果保持在函數之外?

void load(type *parameter)
{
    delete parameter;
    parameter = new type("second");
}

type *pointer = new type("first");
load(pointer);

在這個最小的示例中, pointerpointer第二個分配對象嗎? 如果沒有,我如何獲得這種行為?

更新:為了澄清我的意圖,如果參數是普通類型而不是指針,這是我將使用的代碼。 在這種情況下,我將只使用引用。

void load(type &parameter)
{
    parameter = type("second");
}

type variable("first");
load(&variable);

這很容易,但是我嘗試使用指針做同樣的事情。

沒有。

在這種情況下, parameter將獲取pointer值的副本。 因此,這是一個新變量。 您對其所做的任何更改僅在功能范圍內可見。 pointer保持不變。

您必須通過引用傳遞the pointer

void load(type *& parameter)
                ^
{

您需要通過引用傳遞指針:

void load(type *&parameter);

參見例如http://www.cprogramming.com/tutorial/references.html

或者,您可以使用double指針。

void load(type** parameter)
{
    delete *parameter;
    *parameter = new type("second");
}

type *pointer = new type("first");
load(&pointer);

但是由於您使用的是cpp,因此可以使用references

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM