在C中通过引用传递char数组

gee*_*n92 3 c arrays reference char

嗨,我真的无法理解这一点.我基本上试图通过将输出数组作为参数传递来从函数返回一个char数组.这是我到目前为止:

功能:

int GetComputerName(char *name, char *ip_address){
    *name = "testing";
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

并称之为:

char comp_name[50];
GetComputerName(&comp_name, serverIP);
printf("\n\n name: %s\n\n", comp_name);
Run Code Online (Sandbox Code Playgroud)

我已经尝试切换和交换*和&以查看什么会起作用并且已经阅读指针和内容但我认为应该发生的事实实际发生的事情是两个非常不同的事情现在我认为我已经混淆了自己当我开始!! 大声笑

有人可以帮助我解释一下这样做的正确方法是什么?!

在此先感谢=)

MBy*_*ByD 12

这一行:

*name = "testing"; 
Run Code Online (Sandbox Code Playgroud)

当您将指向"testing"的指针分配给由name指向的char时,它是无效的.您需要将数据复制到缓冲区中.它应该是:

int GetComputerName(char *name, char *ip_address){
    strcpy(name,"testing");
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

甚至更好(避免溢出):

int GetComputerName(char *name, size_t buff_len, char *ip_address){
    strncpy(name,"testing", buff_len);
    name[buff_len - 1] = '\0';
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

并称之为:

GetComputerName(comp_name, sizeof(comp_name), serverIP);
Run Code Online (Sandbox Code Playgroud)