当我在 C 中定义结构体时,我可以为字符串定义
char *
吗?
示例:
struct Patient
{
char *name;
struct *App app_time;
};
然后像这样分配它:
student.name = "yoyo"; // This works when I run it
或者我是否必须将字段名称定义为
char
(如char[20]
)的数组,然后使用strcpy()
?
两者有什么不同?
我尝试上面的代码。我能够打印和更改名称,但我没有尝试使用
scanf()
从用户那里获取输入。
但是我在书上看到不允许在
char *
中使用struct
。
我想知道为什么?
但是我在书中看到不允许在结构中使用 char * 。 想知道为什么吗?
这不是事实。您可以使用任何您想要的类型作为结构成员。
char *x;
不是字符串,只是一个 指针,它可能引用末尾带有空终止字符的 char 数组,这是一个 C 字符串char x[20];
是一个 20 个字符的数组。它还可以包含 C 字符串"yoyo"
是一个字符串文字。字符串文字无法修改,因为它会调用未定义的行为。void foo(void)
{
char *x = "yoyo"; // - x is a pointer to char referencing string literal
char y[] = "yoyo"; // - y is an array of 5 chars. During initialization "yoyo" is copied into this array
char z[20]; // defines unitialized array of 20 chars
strcpy(z, "yoyo");// copies 5 chars to the array z
x = y; // x now is referencing the array y. You can modify this array using this pointer.
}