[英]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.