gpt4 book ai didi

c - 带有目标指针和返回值的 strcpy

转载 作者:太空宇宙 更新时间:2023-11-04 06:28:28 25 4
gpt4 key购买 nike

我的普通 C 有点生疏,我目前正在尝试弄清楚为什么第一个有效而第二个无效。

char *returnSomething(void) {
char *s = (char *) malloc(5 + 1);
strcpy(s, "Hello");

return s;
}

void dontReturnSomething(char *dest) {
char *s = (char *) malloc (5 + 1);
strcpy(s, "Hello");

dest = malloc(strlen(s) + 1);
strcpy(dest, s);
free(s);
}

int main(int argc, char *argv[]) {
char *first = returnSomething();
char *second = NULL;
dontReturnSomething(second);

printf("first: %s | second: %s", first, second);
}

这不基本上是在做同样的事情吗?

最佳答案

要通过参数返回指针,您需要一个指向指针的指针。将 dest 声明为 char **dest

void dontReturnSomething(char **dest) {
char *str = "Hello";
*dest = malloc(strlen(str) + 1);
strcpy(*dest, str);
}

像这样调用函数:

dontReturnSomething(&second);  // pass in address of second

关于c - 带有目标指针和返回值的 strcpy,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23256288/

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