harttle.github.io
harttle.github.io copied to clipboard
2015/10/05/cpp-variable-init
LZ那里应该是int *i = new int吧,另外,定义在函数体中的非动态分配的内存是否会被采用默认的值初始化也依赖与编译器,在我这里的测试中发现g++5.x定义的局部变量也会被默认值初始为0。LZ总结的很棒,博客也很赞哦
By blueyi 2016-05-04T07:20:03Z
嗯,你说的对。一会修改一下~感谢关注!
By Yang Jun 2016-05-04T08:40:19Z
您好楼主,我运行了您的这个程序:
int g_var;
int *g_pointer;
static int g_static;
int main(){
int l_var;
int *l_pointer;
static int l_static;
cout<<g_var<<endl<<g_pointer<<endl<<g_static<<endl; cout<<l_var<<endl<<l_pointer<<endl<<l_static<<endl;="" }="" 多了个分号不说,但是有错误产生:="" error="" c4700:="" 使用了未初始化的局部变量“l_pointer”="" error="" c4700:="" 使用了未初始化的局部变量“l_var”="" 编译环境为vs2013,使用devc++不会报错,如果这样的话,那到底c++语法是怎么定义的?="" 我该怎么办?="">
By Lynn 2016-05-26T09:20:05Z
c4700是一个warning,参见:https://msdn.microsoft.com/...
一般实践中变量肯定是要初始化的,这个warning的出现也很正常。
By Yang Jun 2016-05-27T03:22:02Z
int[] arr 是什么鬼,那不是java风格吗?c++什么时候有这种风格了?
new int[]{1, 2, 3};后面半段也没这这写法啊?我还以为c++有什么改变我不知道,一编译,不通过。。。
感谢!已经改正。