这个指针是否合法? [英] This Pointer is legal or not?
问题描述
#include< cstdlib>
#include< iostream>
#include< vector>
使用namespace std;
vector< int *>测试;
void somefunction(int num)
{
int * p = new int(num) ;
test.push_back(p);
}
int main(int argc,char * argv [])
{
for(int i = 0; i< 10; i ++)
somefunction(i);
for(int i = 0; i< 10; i ++)
{
cout<< * test [i]<< " " ;;
}
for(int i = 0; i< test.size(); i ++)
delete test [i];
system(PAUSE);
返回EXIT_SUCCESS;
}
#include <cstdlib>
#include <iostream>
#include <vector>
using namespace std;
vector<int *> test;
void somefunction(int num)
{
int *p = new int(num);
test.push_back(p);
}
int main(int argc, char *argv[])
{
for(int i=0;i<10;i++)
somefunction(i);
for(int i=0;i<10;i++)
{
cout << *test[i] << " ";
}
for(int i=0;i<test.size();i++)
delete test[i];
system("PAUSE");
return EXIT_SUCCESS;
}
推荐答案
2006年2月5日03:36:42 -0800," morz" < BL ********* @ gmail.com>写道:
On 5 Feb 2006 03:36:42 -0800, "morz" <bl*********@gmail.com> wrote:
#include< cstdlib>
#include< iostream>
#include< vector>
使用命名空间std;
vector< int *>测试;
void somefunction(int num)
int * p = new int(num);
test.push_back(p);
}
{
for(int i = 0; i< ; 10; i ++)
某些函数(i);
for(int i = 0; i< 10; i ++)
{
cout<< * test [i]<< " " ;;
}
for(int i = 0; i< test.size(); i ++)
删除测试[i];
系统(暂停);
返回EXIT_SUCCESS;
}
#include <cstdlib>
#include <iostream>
#include <vector>
using namespace std;
vector<int *> test;
void somefunction(int num)
{
int *p = new int(num);
test.push_back(p);
}
int main(int argc, char *argv[])
{
for(int i=0;i<10;i++)
somefunction(i);
for(int i=0;i<10;i++)
{
cout << *test[i] << " ";
}
for(int i=0;i<test.size();i++)
delete test[i];
system("PAUSE");
return EXIT_SUCCESS;
}
测试不是指针。它是指针的向量。不要去参考
吧!
Test is not a pointer. It is a vector of pointers. Don''t de-reference
it!
morz写道:
#include< cstdlib>
#include< iostream>
#include< vector>
使用命名空间std;
vector< int *>测试;
void somefunction(int num)
int * p = new int(num);
test.push_back(p);
}
{
for(int i = 0; i< ; 10; i ++)
某些函数(i);
for(int i = 0; i< 10; i ++)
{
cout<< * test [i]<< " " ;;
}
这个循环依赖于somefunction()添加元素到
test的事实。
更好地使用test.size( )作为循环标准(与下面的相同)。
for(int i = 0; i< test.size(); i ++)
delete test [i];
system(PAUSE);
返回EXIT_SUCCESS;
}
#include <cstdlib>
#include <iostream>
#include <vector>
using namespace std;
vector<int *> test;
void somefunction(int num)
{
int *p = new int(num);
test.push_back(p);
}
int main(int argc, char *argv[])
{
for(int i=0;i<10;i++)
somefunction(i);
for(int i=0;i<10;i++)
{
cout << *test[i] << " ";
} This loop relies on the fact that somefunction() adds an element to
test.
Better use test.size() as loop criteria (same as you did below).
for(int i=0;i<test.size();i++)
delete test[i];
system("PAUSE");
return EXIT_SUCCESS;
}
您的问题是什么?我不能在程序中看到任何错误,
,除了我上面添加的评论。
问候,斯蒂芬
And what is your question. I can''t see anything wrong in the program,
except the comment I''ve added above.
Regards, Stephan
我不是指针专家,mybe我错了,但矢量测试保持指针
到int .So,得到在它内部的价值,我必须取消传票测试。
好吧,我删除:
for(int i = 0; i< 10; i ++)
{
cout<< * test [i]<< " ;
}
实际上我只想知道下面的代码是否有效,因为
我是好奇的矢量测试,是否仍然保持int * p的地址?
因为指针p超出范围。
#include< cstdlib>
#include< iostream>
#include< vector>
使用命名空间std;
vector< int *>测试;
void somefunction(int num)
{
int * p = new int(num) ;
test.push_back(p);
}
int main(int argc,char * argv [])
{
for(int i = 0; i< 10; i ++)
somefunction(i);
for(int i = 0; i< test.size(); i ++)
删除测试[i];
>
系统(PAUSE);
返回EXIT_SUCCESS;
P / S:抱歉我的英语不好
I''m not expert in pointer,mybe i''m wrong,but vector test hold pointer
to int .So,to get value inside it, i must dereferece vector test.
ok,i remove :
for(int i=0;i<10;i++)
{
cout << *test[i] << " ";
}
Actually i just want to know this code below is valid or not because
i''m curious with vector test,is it still hold address of int * p ?
because pointer p is out of scope.
#include <cstdlib>
#include <iostream>
#include <vector>
using namespace std;
vector<int *> test;
void somefunction(int num)
{
int *p = new int(num);
test.push_back(p);
}
int main(int argc, char *argv[])
{
for(int i=0;i<10;i++)
somefunction(i);
for(int i=0;i<test.size();i++)
delete test[i];
system("PAUSE");
return EXIT_SUCCESS;
P/S : sorry for my broken english
这篇关于这个指针是否合法?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!