| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 298 人关注过本帖
标题:[求助]有关指针
只看楼主 加入收藏
tianxia_buaa
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2007-10-19
收藏
 问题点数:0 回复次数:6 
[求助]有关指针

查找数组中的元素,我想用指针来创建一个数组,并在其中查找指定元素,为什么每次编译能通过,执行时在输入第一个元素后就推出程序了?我想应该是指针用错了,我只用数组可以通过,可我不知道什么地方出错了。求教高手指点啊!!


#include<iostream.h>
void Input(int *p, int num);
void Check(int *p, int num);
void main()
{
int (*Array)[]=0 , num;
cout<<"输入要创建的数组元素的个数!"<<endl;
cin>>num;
Input(*Array,num);
Check(*Array,num);
}

void Input(int *p ,int num)
{
for(int i = 0; i<num ; i++)
{
cout<<"请输入第 "<<i+1<<" 个元素!";
cin>>(*(p+i));
}
}
void Check(int *p , int num)
{
int x;
cout<<"请输入要查找的元素!"<<endl;
cin>>x;
for(int i =0; i<num ;i++)
{
if(*(p+i)==x)
break;
}
if(i<num)
cout<<"你要查找的元素" <<x<<" 是数组中的第 "<<i+1<<" 个元素!"<<endl;
else
cout<<"没有你要找的元素!";

}

搜索更多相关主题的帖子: 指针 
2007-10-19 23:29
zxc1998
Rank: 1
等 级:新手上路
威 望:1
帖 子:133
专家分:0
注 册:2007-3-21
收藏
得分:0 

指针没有申请空间

2007-10-19 23:59
tianxia_buaa
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2007-10-19
收藏
得分:0 
我用 p=new int; 在Input中的 cin 语句之前申请新的空间,结果程序只是向前进行到check中输入要查找的元素值就退出了,是不是因为在Input中申请的空间在退出Input之后就释放了??那我该怎么修改啊,只能在主函数中完成输入数组的功能么??请教大家!谢谢!!!

2007-10-20 09:50
solardo
Rank: 1
等 级:新手上路
帖 子:15
专家分:0
注 册:2007-10-19
收藏
得分:0 

下面三个声明:
1:CAT Familyone[500]; /*一个包含500个CAT对象的数组;*/
2: CAT * FamilyTwo[500];/*一个包含500个CAT对象的指针的数组*/
3: CAT * FamilyThree =new CAT[500]; /* 一个指针,指向一个包含500个CAT对象的数组

//dev c++
//by solardo
//2007-10-21
//ver.1.0
/* Using Pointer of Array */
#include<iostream>
using namespace std;
void Input(int *p, int num);
void Type(int *p, int num);
void Check(int *p, int num);
bool Repeat();
int main()
{
int num=0;
cout<<"输入要创建的数组元素的个数!\t"<<endl;
cin>>num;
int *Array= new int[num];
Input(Array,num);
Type(Array,num);
do
{
Check(Array,num);
}
while(Repeat());

system("pause");
return 0;
}

void Input(int *p ,int num)
{
for(int i = 0; i<num ; i++)
{
cout<<"请输入第 "<<i+1<<" 个元素!\t";
cin>>(*(p+i));
}
cout<<endl;
}

void Type(int *p, int num)
{
cout<<"你的输入是:\t"<<endl;
for (int i=0; i<num;i++)
{
cout<<"第"<< i+1<< "个元素: "<<*(p+i)<<endl;
}
cout<<endl;
}
void Check(int *p , int num)
{
int x=0;
int j=0;
cout<<"请输入要查找的元素!\t"<<endl;
cin>>x;
for(int i =0; i<num ;i++)
{
if(x==*(p+i))
{ j=i;
break;}
else
{j=-1;}
//
}
if(j!=-1)
{
cout<<"你要查找的元素" <<x<<" 是数组中的第 "<<j+1<<" 个元素!"<<endl;
cout<<endl;
}
else
cout<<"没有你要找的元素!"<<endl;

}
bool Repeat()
{
int CH=0;
cout<<"要再检查吗? 是:1. 不:0 .\t"<<endl;
cin>> CH;
if ((CH!=0) && (CH!=1))
{
cout<<"Worng option!\a\a\a";
return 0;
}
else
return CH;
}


[此贴子已经被作者于2007-10-21 21:20:14编辑过]

附件: 游客没有浏览附件的权限,请 登录注册
2007-10-20 16:36
tianxia_buaa
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2007-10-19
收藏
得分:0 
我明白自己错哪了.
int (*Array)[]=0 , num;
cout<<"输入要创建的数组元素的个数!"<<endl;
cin>>num;
Input(*Array,num);
Check(*Array,num);
应该改为
int num;
cout<<"输入要创建的数组元素的个数!"<<endl;
cin>>num;
int *Array = new int[num];
Input(Array,num);
Check(Array,num);
之前没有给头节点的指针Array申请空间,函数参数的传递也不对.

谢谢楼上的各位!!!

2007-10-25 00:12
nicole1998
Rank: 1
等 级:新手上路
威 望:1
帖 子:29
专家分:5
注 册:2007-5-21
收藏
得分:0 

指针学的不好,也来看看

2007-10-25 04:29
deamonhdb
Rank: 1
等 级:新手上路
帖 子:19
专家分:0
注 册:2007-10-7
收藏
得分:0 
没学过C++,来看看,也学学
2007-10-25 09:34
快速回复:[求助]有关指针
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.022331 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved