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

标签 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);
}

如果指针和数组都指向内存位置,为什么这个可以工作,但第一个代码不行?

最佳答案

第一个不起作用,因为将指针分配给数组是没有意义的。但是,第二个可以工作,因为它将一个指针分配给一个指针

关于c - 如何在声明后初始化字符数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53566444/

相关文章:

c - 在结构数组内分配指针

c++ - C++命名空间名和类名重复会导致冲突吗?

java 在静态方法和主方法中处理变量声明和初始化

php - PHP 中未初始化的变量

c++ - 继承,调用基类构造器

C编程指针char数组

c - 初始化结构指针数组会导致奇怪的错误

C 编程 : Error in program. 不会显示用户输入的文件的最大/最小/平均值

iphone - 在 iPhone SDK 中集成 C 项目

c++结构无法识别