你可以取消引用函数内的char指针吗?

qwe*_*esr 1 c pointers

我正在尝试将一个char指针引用到函数内的char数组:

void getword(char *word)
{
    *word = "bar";
}


int main()
{
    char defword[4] = "foo";
    getword(defword);

    printf("%s\n", defword);

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

我希望得到"bar"作为输出,但我似乎得到完全无关的字符串'1oo'.

0xb*_*7ed 5

解除引用的类型char *char- 原始值类型.在这种情况下,*word是一样的word[0].

类型"bar"const char *- 指针类型.

您正在指定指向字符的指针的值.我怀疑你的编译器是否会在没有大声喧哗的情况下发生这种情况.

无论如何,请研究一下strcpy.撇开这一切的可怕不安全,这将更好地工作:

strcpy(word, "bar");
Run Code Online (Sandbox Code Playgroud)