读书人

这边的指针错在哪里呢

发布时间: 2012-09-06 10:37:01 作者: rapoo

这里的指针错在哪里呢?
#include <stdio.h>
#define n 10
#define m 3
int main()
{
int change(int *);
int i,a[100],*p;
printf("please input %d numbers:\n",n);
for(i=0;i<n;i++)
scanf("%d",&a[i]); //输入原次序。
p=a;
change(p); //调用函数重新排序
printf("the new order:\n");
for(i=0;i<n;i++)
printf("%-3d",*(p+i)); // 输出新次序
printf("\n");
system("pause");
return 0;
}

int change(int *p)
{ int *b; //这里的指针b用法错在哪里呢?
int i;
for(i=0,b=p;i<n;i++)
*(b+i)=*(p+i);
for(i=0;i<m;i++)
*(p+i)=*(b+n-m+i);
for(i=m;i<n;i++)
*(p+i)=*(b+i-m);

}

要是把change函数里的指针b形式都改成数组形式,就可以顺利通过了。奇怪?!我错在哪里呢?麻烦解答。谢啦。

指针老是用错。郁闷。

[解决办法]

探讨
我在第一个for循环里对b初始化了,也就是b=p;把指针p赋给指针b,这样不对吗?
我想做的是把后三个数调到前面,前七个数调到后面。

[解决办法]
探讨

引用:

没太明白你要的内容,你的代码在VS08中可以编译通过。
测试也可以得到最后输出的10个数依次为输入的后第3个



我想做的是把最后的三个数调到前面,而前面七个数调到后面,结果总是跟你说的一样,形成后三个数循环的数列。我又不会调试。
但是当我把指针b换成数组形式时就可以达到我的目的了。

读书人网 >C语言

热点推荐