C - 理解结构成员与指针 (char *)
C - understanding struct members vs pointers (char *)
所以我开始学习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
让第三个例子工作。
我的问题是,为什么它在结构的情况下有效?
是的,典型的初学者错误。
感谢@WhozCraig,我认为我做错了。我不应该取消引用指针。我还有很多东西要学。
感谢您的帮助!
//this works fine
char * name = "John";
name = "Doe";
所以我开始学习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
让第三个例子工作。
我的问题是,为什么它在结构的情况下有效?
是的,典型的初学者错误。
感谢@WhozCraig,我认为我做错了。我不应该取消引用指针。我还有很多东西要学。
感谢您的帮助!
//this works fine
char * name = "John";
name = "Doe";