声明后如何初始化字符数组

时间:2018-11-30 23:50:25

标签: c struct initialization

在初始化字符数组后尝试分配它们时,必须使用诸如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);
}

如果指针和数组都指向一个内存位置,为什么这样做却不能执行第一个代码?

1 个答案:

答案 0 :(得分:0)

第一个无效,因为将指针分配给数组是没有意义的。但是,第二个有效,因为它正在将指针分配给指针