c-在函数内部对参数传递的指针使用malloc



在下面的程序中,为什么text3为空?

我希望它是"Text3",因为我在param函数中对它进行了strcpy。

程序

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void param(char* texte3)
{
texte3 = malloc(strlen("Text3") + 1);
strcpy(texte3, "Text3");
}
void param_allocated(char* texte4)
{
strcpy(texte4, "Text4");
}
int main()
{
char* text3 = NULL;
param(text3);
printf("text 3 %sn", text3);
free(text3);
char* text4 = malloc(strlen("Text4") + 1);
param_allocated(text4);
printf("text 4 %sn", text4);
free(text4);
}

输出

text 2 Text2
text 3
text 4 Text4

在行中

texte3 = malloc(strlen("Text3") + 1);

仅修改局部变量CCD_ 1。如果要修改调用程序中的变量text3,则必须将指向该变量的指针传递给param()

param(&text3);

更改函数声明以获取指向指针的指针

void param(char** texte3)

并在分配/使用时取消引用传递的(双(指针:

*texte3 = malloc(strlen("Text3") + 1);
strcpy(*texte3, "Text3");

注意,以上两个语句可以更简短地写成

*texte3 = strdup("Text3");

那么它应该如你所期望的那样工作。

相关内容

  • 没有找到相关文章

最新更新