如何从大腿骨推断身高:C++问题,请指教!!!

来源:百度文库 编辑:神马品牌网 时间:2024/04/27 19:53:16
//排序。
#include<iostream>
using namespace std;
void main(){
int item[5],*i,*j;
for(int a=0;a<4;a++)
cin>>item[a];
item[4]=0;
i=item;
j=&item[1];
while(*i){
while(*j){
*i=*i>*j?*j:*i;
j++;
}
i++;}
while(*i){
cout<<*i;
i++;
}
}
我正在练习指针,请改正是尽量用指针!
谢谢。

while(*i){
while(*j){
*i=*i>*j?*j:*i;
j++;
}
i++;}
while(*i){
cout<<*i;
i++;
}
错误就在这里啊,while(*j)的意思就是指针j所指向的地址的值不为0就继续循环,如果j所指向的地址的值永远不为0,就变成死循环啦,你的j是指向数组item的,如果item里没有为0的值,就不会推出循环,j++所指地址就会越出item的边界,而指向一个未知地址,这样就会引发很多未知错误
改正的方法是不要用*i作为判断条件,用item的长度作为判断条件,以免发生越界现象