对了,上面的static定义静态变量,指在全局范围内定义的全局变量。 如果是局部的,如: void f() { static A a; } 那么,在运行到f函数,执行到 static A a;这一步时,再运行 A::A(){...}对此内存空间进行赋值,而不是main前。
请问大佬能再具体一些吗?我感觉有点懵,,,,static数组值如何赋进去的?
数值0, 对应的ascii 能看吗?!!!!
超出的地方确实不都是0, 因为有可能进入其他的已经被初始化的数据占用的空间。 在全局变量在没有被初始化其他的值的情况下, 编译器会给他们默认初始化为0; 数据段是要写入exe文件保存的, 必须有明确的值,所以编译器会统一给没有指定初值的初始化为0后写入文件保存
[quote=引用 8 楼 CSNN2019 的回复:] [quote=引用 7 楼 GKatHere的回复:]对了,上面的static定义静态变量,指在全局范围内定义的全局变量。 如果是局部的,如: void f() { static A a; } 那么,在运行到f函数,执行到 static A a;这一步时,再运行 A::A(){...}对此内存空间进行赋值,而不是main前。
[quote=引用 7 楼 GKatHere的回复:]对了,上面的static定义静态变量,指在全局范围内定义的全局变量。 如果是局部的,如: void f() { static A a; } 那么,在运行到f函数,执行到 static A a;这一步时,再运行 A::A(){...}对此内存空间进行赋值,而不是main前。
[quote=引用 2 楼 CSNN2019 的回复:] 那static数组中的赋值怎么赋进去的?我很奇怪,初始化这个static数组时它的汇编代码居然没有???输出的时候数值从哪来??最起码一般数组我看到通过通用寄存器来把数值赋进去,可他一句没有
那static数组中的赋值怎么赋进去的?我很奇怪,初始化这个static数组时它的汇编代码居然没有???输出的时候数值从哪来??最起码一般数组我看到通过通用寄存器来把数值赋进去,可他一句没有
64,637
社区成员
250,559
社区内容
加载中
试试用AI创作助手写篇文章吧