首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

指针的有关问题,新手

2012-03-25 
指针的问题,新手求助!#include stdio.h#define N 10void comp(int * arr, int n)int main(void){int i,

指针的问题,新手求助!
#include <stdio.h>
#define N 10
void comp(int * arr, int n);

int main(void)
{
int i,j,tmp;
int a[N];
for(i=0;i<N;i++)
scanf("%d",&a[i]);
/*for(i=0;i<N;i++)
for(j=0;j<N-i;j++)
if(a[j]>a[j+1])
{
tmp = a[j];
a[j]= a[j+1];
a[j+1]= tmp;
}
*/
int * p ;
p = a;
comp(p,N);
for(i=0;i<N;i++)
printf("%d\n",a[i]);
printf("\n");
return 0;

}
void comp(int * arr, int n)
{
int i,j,tmp;
for(i=0;i<n;i++)
for(j=0;j<n-i;j++)
if(arr[j]>arr[j+1])
{
tmp = arr[j];
arr[j]= arr[j+1];
arr[j+1]= tmp;
}


return ;
}

我把冒泡法单独拿出来用就出问题了,
如果comp(a,N);的话就没有问题,但是定义了一个指针,为什么就出现错误呢?
运行结果是这样的
输入:1 3 5 7 9 2 4 6 8 0
输出:
-1079551224
0
1
2
3
4
5
6
7
8


[解决办法]
#include <stdio.h>
#define N 10
void comp(int * arr, int n);

int main(void)
{
int i;
int a[N] = {1, 3, 5, 7, 9, 2, 4, 6, 8, 0};
int * p ;
//for(i=0;i<N;i++)
//scanf("%d",&a[i]);
/* for(i=0;i<N;i++)
for(j=0;j<N-i;j++)
if(a[j]>a[j+1])
{
tmp = a[j];
a[j]= a[j+1];
a[j+1]= tmp;
}
*/
p = a;
comp(p,N);
for(i=0;i<N;i++)
printf("%d\n",a[i]);
printf("\n");
return 0;

}

void comp(int * arr, int n)
{
int i,j,tmp;
for(i=0;i<N;i++)
for(j=0;j<N-i-1;j++)// 注意这里,是j < N-i-1
if(arr[j]>arr[j+1])
{
tmp = arr[j];
arr[j]= arr[j+1];
arr[j+1]= tmp;
}
}

热点排行