#include <vector>
#include <iostream>
using namespace std;
void display()
{
cout << int_vec[0] << endl;
}
int main()
{
static vector < int > int_vec;
int_vec.push_back(1);
display();
return 1;
}
据:书介绍,局部静态对象所处的内存空间,即使在不同的函数调用过程中,依然持续存在。
但是在上述程序中,编译器总是提示 “error C2065: 'int_vec' : undeclared identifier”
不知在下错在哪了,还请大家帮着看看!
谢谢!!
8 个解决方案
#1
"局部静态对象所处的内存空间,即使在不同的函数调用过程中,依然持续存在"
但是在相同作用域中啊,
int_vec不在display()的作用域中!
但是在相同作用域中啊,
int_vec不在display()的作用域中!
#2
是存在的。不过只是在那个main函数中是可以用的。其它的地方是不行的。
#3
int_vec还没定义就使用,当然编译通不过了。
建议楼主好好把基础补一下
建议楼主好好把基础补一下
#4
虽然它是静态的。可是你定义的是一个局部问题呀。
#5
#include <vector>
#include <iostream>
using namespace std;
static vector < int > int_vec;
void display()
{
cout << int_vec[0] << endl;
}
int main()
{
int_vec.push_back(1);
display();
return 1;
}
That's just you want
#include <iostream>
using namespace std;
static vector < int > int_vec;
void display()
{
cout << int_vec[0] << endl;
}
int main()
{
int_vec.push_back(1);
display();
return 1;
}
That's just you want
#6
#include <iostream>
using namespace std;
int staticCount()
{ static int count=0;
return ++count;
}
int Count()
{ int count=0;
return ++count;
}
void main()
{
for(int i=0;i<10;++i){
cout<<staticCount()<<' '<<Count()<<endl;
}
}
答案是:
1 1
2 1
3 1
4 1
5 1
6 1
7 1
8 1
9 1
10 1
静态vector和静态int的含义,用法一样。
using namespace std;
int staticCount()
{ static int count=0;
return ++count;
}
int Count()
{ int count=0;
return ++count;
}
void main()
{
for(int i=0;i<10;++i){
cout<<staticCount()<<' '<<Count()<<endl;
}
}
答案是:
1 1
2 1
3 1
4 1
5 1
6 1
7 1
8 1
9 1
10 1
静态vector和静态int的含义,用法一样。
#7
不要把静态变量的内存分配方式和作用域弄混了。局部变量,不管是不是静态的,在作用域之外都不可见。静态的局部变量,只是说这个变量会一直存在,每次函数调用,操作的都是同一个变量而已。
#8
谢谢大家!!小弟懂了!!!! ^_^
#1
"局部静态对象所处的内存空间,即使在不同的函数调用过程中,依然持续存在"
但是在相同作用域中啊,
int_vec不在display()的作用域中!
但是在相同作用域中啊,
int_vec不在display()的作用域中!
#2
是存在的。不过只是在那个main函数中是可以用的。其它的地方是不行的。
#3
int_vec还没定义就使用,当然编译通不过了。
建议楼主好好把基础补一下
建议楼主好好把基础补一下
#4
虽然它是静态的。可是你定义的是一个局部问题呀。
#5
#include <vector>
#include <iostream>
using namespace std;
static vector < int > int_vec;
void display()
{
cout << int_vec[0] << endl;
}
int main()
{
int_vec.push_back(1);
display();
return 1;
}
That's just you want
#include <iostream>
using namespace std;
static vector < int > int_vec;
void display()
{
cout << int_vec[0] << endl;
}
int main()
{
int_vec.push_back(1);
display();
return 1;
}
That's just you want
#6
#include <iostream>
using namespace std;
int staticCount()
{ static int count=0;
return ++count;
}
int Count()
{ int count=0;
return ++count;
}
void main()
{
for(int i=0;i<10;++i){
cout<<staticCount()<<' '<<Count()<<endl;
}
}
答案是:
1 1
2 1
3 1
4 1
5 1
6 1
7 1
8 1
9 1
10 1
静态vector和静态int的含义,用法一样。
using namespace std;
int staticCount()
{ static int count=0;
return ++count;
}
int Count()
{ int count=0;
return ++count;
}
void main()
{
for(int i=0;i<10;++i){
cout<<staticCount()<<' '<<Count()<<endl;
}
}
答案是:
1 1
2 1
3 1
4 1
5 1
6 1
7 1
8 1
9 1
10 1
静态vector和静态int的含义,用法一样。
#7
不要把静态变量的内存分配方式和作用域弄混了。局部变量,不管是不是静态的,在作用域之外都不可见。静态的局部变量,只是说这个变量会一直存在,每次函数调用,操作的都是同一个变量而已。
#8
谢谢大家!!小弟懂了!!!! ^_^