簡體   English   中英

修改function中的指針值

[英]Modifying pointer value in function

任何人都可以指出為什么以下代碼在修改 function 時需要 char** 指針。如果我只是傳遞 char* 並在 function 調用返回 k 具有垃圾值后修改該值。 有人可以證明這一點嗎?

char* call()
{
    return "fg";
}
void modify(char** i)
{
    *i = call();
}

int main()
{
    char* k= new char[3];
    modify(k);
}

當您將某些內容傳遞給 function 時,您按值傳遞它。 這意味着 function 對那個東西的副本進行操作。

這也適用於指針。 如果您傳遞一個char * ,則會生成該指針的副本; 原始指針未被修改。 如果要修改原始指針本身,則需要通過char **參數傳遞其地址。


筆記:

1. 同樣值得指出的是,您的代碼包含 memory 泄漏。 您動態分配一些 memory,然后丟失指向它的指針,這意味着您永遠無法delete它。

2. 在 C++ 中,你通常應該避免像這樣傳遞原始指針,因為它會導致痛苦和混亂。 你應該看看智能指針。

暫無
暫無

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

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