在初始化字符数组后尝试分配它们时,必须使用诸如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);
}
如果指针和数组都指向一个内存位置,为什么这样做却不能执行第一个代码?
答案 0 :(得分:0)
第一个无效,因为将指针分配给数组是没有意义的。但是,第二个有效,因为它正在将指针分配给指针