c/c++语言开发共享错误:在文件范围内修改了’d’

代码1: –

int size; struct demo { int a; }; int main() { scanf("%d",&size); struct demo d[size]; return 0; } 

这段代码工作正常。

代码2: –

 int size; struct demo { int a; }; int main() { scanf("%d",&size); return 0; } struct demo d[size]; 

此代码显示错误: –

 error : variably modified 'd' at file scope 

为什么这样的错误会出现在Code 2Code 1运行正常?

    在代码2中,您的结构数组驻留在数据段中,根据定义

    数据段是程序的虚拟地址空间的一部分,其包含由程序员初始化的全局变量和静态变量。 该段的大小由程序员在编译或汇编程序之前放置的值确定,并且在运行时不会更改

    因为第二个例子中的d数组是全局的,所以它不能是一个可变长度的数组; 那些直到运行时才得到它们的实际大小,这对于全局来说是不可能的。 编译器必须能够在可执行文件中为全局数据分配空间,如果大小未知,则无法进行。

    函数内部声明的变量是堆栈变量,它们在调用函数时分配。 另一方面,全局变量是在任何函数执行之前分配的堆变量。 这就是为什么在第二个代码中,不可能为数组d分配内存。

      以上就是c/c++开发分享错误:在文件范围内修改了’d’相关内容,想了解更多C/C++开发(异常处理)及C/C++游戏开发关注计算机技术网(www.ctvol.com)!)。

      本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

      ctvol管理联系方式QQ:251552304

      本文章地址:https://www.ctvol.com/c-cdevelopment/559753.html

      (0)
      上一篇 2021年1月27日
      下一篇 2021年1月27日

      精彩推荐