这个指针是否合法? [英] This Pointer is legal or not?

查看:54
本文介绍了这个指针是否合法?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

#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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆