gpt4 book ai didi

c - 如何通过函数设置指针引用

转载 作者:太空狗 更新时间:2023-10-29 16:42:44 24 4
gpt4 key购买 nike

在 C 中,我试图通过将指针发送给函数来设置指针的值,但该值不会在函数外更改。这是我的代码:

#include <stdio.h>
void foo(char* str) {

char* new_str = malloc(100);
memset(new_str, 0, 100);
strcpy(new_str, (char*)"new test");

str = new_str;
}


int main (int argc, char *argv[]) {

char* str = malloc(100);
memset(str, 0, 100);

strcpy(str, (char*)"test");

foo(str);

printf("str = %s\n", str);
}

我要打印出来:

str = new test 

但是这段代码打印出来:

str = test

任何帮助将不胜感激。提前致谢。

最佳答案

C 中没有按引用传递。如果您提供 str 作为 C 中函数的参数,您总是传递 str 的当前值,从不 str 本身。

您可以将指向 str 的指针传递给函数:

void foo(char** pstr) {
// ...
*pstr = new_str;
}

int main() {
// ...
foo(&str);
}

正如 Eiko 所说,您的示例代码泄漏了第一个内存分配。您不再使用它,也不再有指向它的指针,因此您无法释放它。这很糟糕。

关于c - 如何通过函数设置指针引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3526503/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com