C语言中所有的变量默认都是自动的,全局变量不能是自动的,那么为什么全局变量默认为自动呢?

发布于 科技 2024-04-19
20个回答
  1. 匿名用户2024-01-27

    默认值为 extern

    除非添加静态修饰符,否则全局变量的作用域是完整的项目,即所有 C 文件。

    一旦静止,更改量仅在当前文件中有效。

    PS:商店描述修饰符包括自动注册外部和静态

  2. 匿名用户2024-01-26

    全局变量作用域是整个项目的整个源程序。 如果函数想要直接使用全局变量,则应在函数之前定义全局变量。 全局变量的默认说明符是 extern。

  3. 匿名用户2024-01-25

    C 语言中的 Auto 可能是以下三种存储类型之一: 寄存器 extern static。

    变量涉及几个方面:存储位置、范围。 局部变量和全局变量的范围不同。 虽然变量存储在内存中,但寄存器或对外部变量的引用可能会导致读取和写入速度的差异。

    局部变量很可能会自动进入寄存器,以便可以快速读取和写入它们。 全局变量也可以是这些类型。

    但说实话,auto 在 C 语言中真的没用。 这导致C++使用Auto来做更有意义的事情。

  4. 匿名用户2024-01-24

    全局变量默认也是自动的,只是全局变量的生命周期从程序启动就开始了,直到程序结束。

    但在新的C++标准中,它似乎对auto有了新的含义。 我没有仔细研究,只是看了一眼。

  5. 匿名用户2024-01-23

    全局变量默认为 extern

    除非添加静态修饰符,否则全局变量的作用域是完整的项目,即所有 C 文件。

    一旦静止,更改量仅在当前文件中有效。

    存储描述修饰符包括 auto register extern static

  6. 匿名用户2024-01-22

    默认值为 extern

    除非静态

    修饰。 全局变量的作用域是所有项目,即所有 C 文件。

    并且一旦静态

    更改金额仅对当前文件有效。

    ps:存储描述修饰符包括 auto

    register

    extern

    和静态

  7. 匿名用户2024-01-21

    自动在 C 语言

    该语言中有三种类型的存储:寄存器、extern、static。

    变量涉及几个方面:存储位置、范围。

    局部变量和全局变量的范围不同。 变量存储在内存中,寄存器仍引用外部变量。

    可能导致。

    读写速度差异。

    局部变量极有可能变为自动变量。

    注册以获得快速读取和写入。 全局变量也可以是这些类型。

    但说实话,auto 在 C 语言中真的没用。 这导致了 C++ 放。

    汽车现在被用来做更有意义的事情。

  8. 匿名用户2024-01-20

    全局变量不能声明为 auto 类型,默认情况下它们被声明为 static

  9. 匿名用户2024-01-19

    auto 关键字用于将变量的生存期声明为 automatic。 此关键字表示当前变量的作用域是当前函数或段的局部变量,这意味着当前变量将分配在内存堆栈上。

    全局变量不能是自动的,因为两者在内存分配方面是不同的模式。

    但是,需要注意的是,全局变量并不等同于静态变量,在内存分配的原则中,全局变量等同于 extern,它们的生命周期都是进程级的。

  10. 匿名用户2024-01-18

    系统在赋值全局变量之前默认为0,赋值前局部变量的值是不确定的,因此在声明局部变量时必须初始化。

  11. 匿名用户2024-01-17

    值为 0

    指针为 null

    对于类,它由构造函数初始化。

  12. 匿名用户2024-01-16

    它是随机的,它与编译器和环境有关。

    还有数据类型。

  13. 匿名用户2024-01-15

    不。 全局变量和局部变量都可以初始化,也可以不初始化,语法不需要这样做。

    但要根据实际情况,根据你写的**来分析。

    你写了 int total = 0;

    您不初始化错误的原因是 int total;

    total 是一个没有赋值的变量,它的值是分配的内存中剩余的值,即错误数据。

    你使用 total+=num[j]。如果对错误的数据进行操作,则会报错,即使不报错,得到的结果也是不正确的。

    因此,在您的情况下,赋值为 0。 这不是语法规定。

  14. 匿名用户2024-01-14

    全局变量,局部变量应该初始化,全局变量不应该初始化“,这个不一定,但也要看编译器,如果编译器需要初始化,那就按照要求去做。

  15. 匿名用户2024-01-13

    auto 在函数中使用。

    全局变量本身不能用 auto 修改。

    你可以试试,定义一个全局变量并添加 auto,编译会出错。

    所以这句话是错误的。

    至于正确的关键字,默认实际上是 extern

    当你实际为全局变量的存储属性写 ** 时,你会发现是否添加 extern 对结果没有影响,但是否添加 static 对结果有影响。

    所以默认值是 extern

  16. 匿名用户2024-01-12

    全局变量实际上是静态的

  17. 匿名用户2024-01-11

    有两种可能性。

    一个是它被分配到某个地方。

    由于每个函数都可以访问全局变量,因此可以在某个地方为其分配一个值,而您不会注意到。

    另一种可能性是已达到越界操作,该操作访问了全局变量的内存并更改了值。 这个更难找到。

  18. 匿名用户2024-01-10

    全局变量一般是指在程序入口地址之前定义的数据(C语言源程序在main函数之前定义,Windows程序在Winmain函数之前定义),全局变量一般不需要添加任何关键字声明。 直接在 main 函数之前定义 int a; 就是这样。 请注意,全局变量在编译时是作为存储单元分配的,所以如果你不初始化它,编译器会自动将其初始化为 0,全局变量的作用域是整个程序,所以程序中的所有子例程(函数)都可以使用它。

    局部变量 因为全局变量可以被程序的所有函数使用,为了防止程序中某个函数专用的数据被其他函数有意或无意地修改,引入了局部变量,可以用 auto 关键字声明,但 auto 关键字一般省略,局部变量在函数中定义, 如 main 函数中的 int a=0;在 fun 函数中定义 int b=0; 局部变量在程序执行时临时分配给存储单元,它存储在堆栈段中,每个函数会计算函数中有多少局部变量,占用了多少存储空间,然后增加堆栈段空间来容纳这些数据,因为它是临时分配的存储空间, 所以所有的局部变量都没有初始化,里面的数据是其他函数使用的垃圾数据,必须给局部变量赋值。在函数结束时,堆栈空间被释放,即局部变量仅在其所在函数的生命周期内有效。 执行函数时,函数中的所有局部变量都不可用。

    静态变量 因为局部变量的生命周期只在局部变量被改变的函数的生命周期内有效,所以在很多程序中,函数中的局部变量经常被保留下来,以便下次调用函数时可以使用,所以就有了静态变量的概念。 静态变量类似于全局变量,它们在编译时也分配内存空间,并自动初始化为0,静态变量的生命周期也是整个程序。 但是,与全局变量不同的是,静态变量只能由它们所在的函数使用,程序中的其他函数无法访问它。

    静态变量必须使用 static 关键字声明。 例如,static int a;

  19. 匿名用户2024-01-09

    全局变量的类型必须是静态的。

    这种说法是错误的,静态类型全局变量是全局变量的形式之一。

  20. 匿名用户2024-01-08

    c规定未初始化变量的初始值为0,清空0的操作由启动完成,初始化变量初始值的设置也由启动完成。

    为了开始简化,编译链接器将初始化的变量放在同一部分中:数据,该段的映像(包含每个变量的初始值)存储在“只读数据段”中,以便启动可以简单地将该映像复制到data 部分,所有初始化的变量都将初始化。

    而未初始化的变量也被放在同一个部分:bss,启动 ** 并简单地调用 memset 将所有未初始化的变量清除为 0。

相关回答
9个回答2024-04-19

A 是一个全局变量,所以谁(任何函数)都可以修改它的值,所以函数 f 对 a 的修改是有效的,即每次 a 都 +1。 >>>More

11个回答2024-04-19

变量是一种量,其值可以使用标识符作为其名称进行更改。 变量表示计算机内存中的存储单元,存储在该内存单元中的数据是该变量的值。 如果程序中有变量a,a是存储单元的名称,用户对变量a的操作就是存储单元的操作; 为变量 A 赋值是将数据存储在变量 a 表示的存储单元中。

10个回答2024-04-19

在 Windows 平台上 +VC 指针是 4 个字节,我不知道你在用什么。 >>>More

22个回答2024-04-19

struct 变量的第一个地址是 struct 变量在内存中的初始地址值。 在 C 中,对于任何结构变量 a,第一个地址都可以通过 &a 获得。 >>>More

14个回答2024-04-19

它是将 DAT 的值存储在加法器地址上,注意它是一个 16 位无符号数字。 >>>More