C程序问题,为什么地址传不过去

来源:百度知道 编辑:UC知道 时间:2024/06/04 08:40:49
#include "stdio.h"
main()
{int input(int *p);int proess(int *p);int output(int *p);
int ten_number[10];
int *p=ten_number;

input(p); /*ten_number的第一个地址传不到下面*/
proess(p);
output(p);
}
input(int *p)
{int i;
for(i=0;i<10;i++)
{scanf("%d",p+i);}
}

proess(int *p)
{int i,*temp,k;
for(i=1;i<10;i++)
if(p>p+i) k=i;
temp=p;p=p+k;p+k=temp; /*这里没有值,空的*/

}
output(int *p)
{int i;
for(i=0;i<10;i++)
{printf("%d",p+i);}
}
修改后:
#include "stdio.h"
main()
{int input(int *p);int proess(int *p);int output(int *p);
int ten_number[10];
int *p=ten_number;

input(p);
proess(p);
output(p);
}
input(int *p)
{int i;
for(i=0;i<10;i++)
{scanf("%d",p+i);}
}

proess(int *p)
{int i,*temp,k;
for(i

#include "stdio.h"
main()
{int input(int *p);int proess(int *p);int output(int *p);
int ten_number[10];
int *p=ten_number;

input(p);
proess(p);
output(p);
}
input(int *p)
{int i;
for(i=0;i<10;i++)
{scanf("%d",p+i);}
}

proess(int *p)
{int i,*temp,k;
for(i=1;i<10;i++)
if(*p>*(p+i)) /*这里的比较一定是指针所指数值之间的比较,而不是指针所指数值地址的比较*/
k=i;
temp=p;p=p+k;p+k=temp;

}
output(int *p)
{int i;
for(i=0;i<10;i++)
{printf("%d",*(p+i));} /*输出指针所指的数值,要加上* */
}

看不懂你的程序的意图,你是不是想将输入的10个数字按递增顺序排列呢?

#include <stdio.h>
int input(int *p);
int proess(int *p);
int output(int *p);
main()
{
int ten_number[10];
int *p=ten_number;

printf("\nPlease enter 10 num:");
input(p);
proess(p);
output(p);
}

input(int *p)