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