c - 变量声明完成后一次性初始化/定义结构变量

标签 c structure definition redefinition

我们可以在声明或定义结构体变量后一次性定义它吗?全部放在单大括号中,例如

asd = {21,'H'};

如果无法完成,有任何特殊原因,因为它可以在声明的同一行中定义,例如:struct asd = {21,'H'}; ?

struct test
{
    int a;
    char b;
}asd;  

asd = {21,'H'};   // error: expected an expression

要求进行C 编程。

最佳答案

struct test
{
    int a;
    char b;
}asd; 

struct testtest 类型的变量asd 的定义。在 ; 处,您现在有一个名为 asd 的默认构造对象。当你尝试做

asd = {21, 'H'};

您正在尝试分配给 asd 和花括号列表,这将不起作用,因为它没有采用初始化列表的赋值运算符。

您可以在声明时初始化asd,如下

struct test
{
    int a;
    char b;
}asd = {21, 'H'}; 

或者像这样进行作业

asd = (struct test){21, 'H'};

如果您选择使用赋值,请注意它必须在函数内部完成,而不是在全局空间中完成。

关于c - 变量声明完成后一次性初始化/定义结构变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39235602/

相关文章:

c - 指向结构数组的指针 - 解释

java - 注解:限制对带有注解的类的引用

list - 如何使用 R 自动创建结构列表?

variables - 对 Protractor v1.4.0 'protractor' 和 'browser' 全局变量感到困惑

c++ - 如何修复通过重载和模板化的插入运算符尝试显示字符串对象数组而产生的空白输出?

Linux上GCC编译错误

在 C 中创建一个带有字符的字符串数组

c - 基本动态内存和数组指针

c - C中基于事件的套接字编程

C:在不使用全局变量的情况下,从创建的线程中操作在 main 中声明的结构