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

这边的指针错在哪里呢

2012-09-06 
这里的指针错在哪里呢?#include stdio.h#define n 10#define m 3int main(){int change(int *)int i,a[

这里的指针错在哪里呢?
#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换成数组形式时就可以达到我的目的了。

热点排行