不允许在main外部更改struct成员变量?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了不允许在main外部更改struct成员变量?相关的知识,希望对你有一定的参考价值。

我有以下代码

struct test
{
   int i;
};

struct test a = {3};
a.i = 1; // error

int anumber = 10; // allowed
anumber = 3; // error

void main(void)
{

}

这会产生错误,但是如果我把它放在行中

a.i = 1;

在main内部,然后一切正常。

为什么不允许在函数外部更改struct成员变量?

答案

在C中,所有语句必须在函数内部出现。 a.i = 1;是一个语句。当程序运行时,执行从main函数开始,并且该函数中的语句按顺序执行。

struct test a = {3};是一个声明,因为它声明了某些内容,没有任何执行。

以上是关于不允许在main外部更改struct成员变量?的主要内容,如果未能解决你的问题,请参考以下文章

结构体struct和联合体union(联合)有啥区别呢?

C ++ - 类方法更改成员变量,但不在main中

为啥 &mut self 允许借用 struct 成员,但不允许将 self 借用到不可变方法?

将 struct 成员放在单独的变量中以清理代码并帮助我了解代码的格式会如何不同

Python:如何允许“内部函数”更改多个“外部函数”中的非局部变量

GO语言struct语法