当您在初始化字符数组后尝试分配它们时,您必须使用像 strcpy 这样的函数。
#include<stdio.h>
void main()
{
struct emp
{
char name[25];
int age;
float bs;
};
struct emp e;
e.name = "Steven";
e.age = 25;
printf("%s %d\n", e.name, e.age);
}
此代码仅在我进行以下更改时才有效
#include<stdio.h>
void main()
{
struct emp
{
char name[25];
int age;
float bs;
};
struct emp e;
strcpy(e.name, "Steven");
e.age = 25;
printf("%s %d\n", e.name, e.age);
}
但是,如果我们使用指针而不是数组,我们可以在初始化后分配字符串。
#include<stdio.h>
void main()
{
struct emp
{
char *name;
int age;
float bs;
};
struct emp e;
e.name = "Steven";
e.age = 25;
printf("%s %d\n", e.name, e.age);
}
如果指针和数组都指向内存位置,为什么这个可以工作,但第一个代码不行?
最佳答案
第一个不起作用,因为将指针分配给数组是没有意义的。但是,第二个可以工作,因为它将一个指针分配给一个指针
关于c - 如何在声明后初始化字符数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53566444/