C - 理解struct成员vs指针(char *)

时间:2015-05-28 23:11:26

标签: c pointers struct variable-assignment c-strings

所以我开始学习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

1 个答案:

答案 0 :(得分:4)

所以,这是典型的初学者的错误。

感谢@WhozCraig我觉得我做错了。我不应该取消引用指针。我有很多东西需要学习。

感谢您的帮助!

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
This is a test sentence.  Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.