所以我开始学习C语言。到目前为止,它一直很顺利,但我发现理解一些事情很困难。
因为我是新来的,我真的不知道该用什么搜索词,但我所有的搜索都没有发现有用的东西。
看看下面的代码

#include <stdio.h>

typedef struct {
    char * name;
} person;

int main() {
    //this works
    person * myperson = malloc(sizeof(person));
    myperson->name = "John";
    myperson->name = "Doe";
    free(myperson);//works

    //this also works
    person myotherperson;
    myotherperson.name = "John";
    myotherperson.name = "Doe";//works

    //this throws a runtime error
    char * name = "John";
    *name = "Doe";

    return 0;
}

最初,我认为第一个示例是有效的,因为它是动态分配的,但是后来,我尝试了第二个,它也工作得很好。
我知道我需要使用strcopy来实现第三个示例。
我的问题是,为什么它在结构的情况下工作?
https://ideone.com/GIAgf8

最佳答案

所以是的,典型的初学者错误。
多亏了@WhozCraig,我觉得我做错了。我不应该取消指针的引用。我有很多东西要学。
谢谢你的帮助!

//this works fine
char * name = "John";
name = "Doe";

关于c - C-了解结构成员与指针(char *),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30518552/

10-11 22:51
查看更多