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

时间:2012-05-06 06:12:09

标签: c arrays reference char

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

功能:

int GetComputerName(char *name, char *ip_address){
    *name = "testing";
    return 0;
}

并称之为:

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

我尝试过切换和交换*和&看看会有什么用,并且已经阅读了指针和内容,但我认为应该发生的事情实际上发生了两件完全不同的事情,现在我觉得我比自己开始时更加困惑!洛尔

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

提前致谢=)

2 个答案:

答案 0 :(得分:12)

这一行:

*name = "testing"; 

无效,因为您将指向“testing”的指针分配到名称指向的 char 。您需要将数据复制到缓冲区中。它应该是:

int GetComputerName(char *name, char *ip_address){
    strcpy(name,"testing");
    return 0;
}

甚至更好(以避免溢出):

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

并称之为:

GetComputerName(comp_name, sizeof(comp_name), serverIP);

答案 1 :(得分:-1)

您可以将"testing"分配到*name中。
只需写:

name = "testing" |( as it is a pointer);
char **n2,n3[20];n2= &name; strcpy(n3,name);