关于C++中非局部静态变量和全局变量初始化的具体过程是怎样的

关于C++中非局部静态变量和全局变量初始化的具体过程是怎样的,第1张

不是的。全局变量还是局部变量都可以初始化或者不初始化化 ,语法没有对这有要求。
但是到实际情况是根据你写的代码来分析。
你写的int total = 0;
在你不初始化报错的原因是,int total;
total是没有赋值的一个变量,那他的值就是分配内存中残留的值,属于错误的数据。
你后面用到total+=num[j]一个错误的数据做 *** 作就报错了,就算不报错,你得到的结果是不正确的。
所以在你这个情况,赋值为0 。并不是语法规定。

全局变量只能在定义时初始化,对已经定义好的全局变量做赋值 *** 作只能在局部
比如:
int a=2; //定义时初始化OK
a=3; //非法
void f()
{
a=3; //OK
}
像你的那个数组,这样初始化就没问题:
char frameBuffer[500]={'\0'};
int main()
{
frameBuffer[0] = '\0'; //这样的赋值只能在局部
}

你是想得到dll的返回值,有多种办法。
第一种就是dll直接返回该类,必须完成该类的复制构造函数,该方法为线程间共享。
第三种办法是通过内存文件,进程间都可以共用。
第二种办法就是通过数据库,返回值存在数据库中,成为真正的系统级别共享数据。
其他的方法诸如通过xml文件啊,中间件啊什么的就不累述了。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/10412292.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-08
下一篇 2023-05-08

发表评论

登录后才能评论

评论列表(0条)

保存