Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
任何人都可以指出为什么以下代码在修改函数中需要 char** 指针。如果我只是传递 char* 并在函数调用返回 k 后修改值,则 k 具有垃圾值。有人可以证明这一点吗?
char* call() { return "fg"; } void modify(char** i) { *i = call(); } int main() { char* k= new char[3]; modify(k); }
当您将某些内容传递给函数时,您通过value传递它。这意味着该函数对该事物的副本进行操作。
这也适用于指针。如果您传递 a char *,则会生成该指针的副本;原始指针没有被修改。如果要修改原始指针本身,则需要通过char **参数传递其地址。
char *
char **
笔记:
1. 还值得指出的是您的代码包含内存泄漏。您动态分配一些内存,然后丢失指向它的指针,这意味着您永远无法获得delete它。
delete
2. 在 C++ 中,您通常应该避免像这样传递原始指针,因为它会导致痛苦和混乱。您应该研究智能指针。