我说我有
struct student
{
char* first_name;
};
typedef struct
{
struct student name;
} Person;
char* first_name_of_someone = "John";
为什么我必须先分配malloc然后使用strcpy才能将John放在first_name中?为什么我不能像这样分配它?
Person* person = malloc(sizeof(Person));
struct student s;
s.first_name = "John";
person->name = s;
答案 0 :(得分:2)
如果您事先知道要复制什么值,则不需要malloc
s.first_name = "John";
如果您想知道在运行时要复制什么值,该怎么办?
在这种情况下,您需要malloc
和strcpy
。
fgets(tempbuf, sizeof tempbuf, stdin);
s.first_name = malloc(somelength);
strcpy(s.first_name, tempbuf);
或
s.first_name = tempbuf;
在后一种情况下,first_name
将始终指向存储在tempbuf
中的最新值。