C语言中函数调用的问题?

#include<stdio.h>
/
*@param p 保存的是要处理的地址
*@param m 从m位置开始
*@param n 一共n个元素
*/
void inverse(int *p,int m, int n)
{
int *p1 = p+m-1;
int *p2 = p+m-2;
int t = 0;
while(p1 < p2)
{
//交换p1,p2指向单元的值
t = *p1;
*p1 = *p2;
*p2 = t;
p1++;
p2--;
}
}
int main(int argc, char* argv[])
{
int array[10] = {1,2,3,4,5,6,7,8,9,10};
int m = 3;
int n = 7;
inverse (&array[0],m,n);
int i = 0;
for(i = 0; i < 10; i++)
{
printf("%d\t",array[i]);
}
return 0;
}编译运行后,结果根本没有调用我第一个函数。求求大神们解答。说根本没有调用这个函数,说调用其他地方去了,我直接创建源代码写的(DEV),写程序必须创建项目吗?

关于c语言中函数调用问题解答如下:

首先如果是编译的这个代码那这个函数肯定被调用了,让你觉得没有调用是因为while循环没有被执行。

图中红色框内代码p1和p2经过赋值p1是肯定大于p2所以不满足while.的条件直接退出了函数。

你需要看看要实现啥在改一下。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2021-11-21

不是没调用,而是函数写得不对:

#include<stdio.h>

void inverse(int *p,int m, int n)

{ int *p1 = p+m-1;

  int *p2 = p+n-1;

  int t;

  while(p1 < p2)

  {

//交换p1,p2指向单元的值

    t = *p1;

    *p1 = *p2;

    *p2 = t;

    p1++;

    p2--;

  }

}

int main(int argc, char* argv[])

{ int array[10] = {1,2,3,4,5,6,7,8,9,10};

  int m = 3;

  int i,n = 7;

  inverse (&array[0],m,n);

  for(i = 0; i < 10; i++)

  { printf("%d\t",array[i]);

  }

  return 0;

}

本回答被网友采纳
第2个回答  2021-11-20
首先:有必要创建项目,用项目管理代码时比较好的规范
其次:你怎么确信它没有调用,代码看起来每问题啊。除了这个源码你是不是还有其他源码,所以没有进这个main

不要不创建项目就写代码,不要把所有作业放一个目录
第3个回答  2021-11-20
明显是调用了你第一个函数的,不信你可以在第一个函数里随便输出点东西查看
int *p1 = p+m-1;
int *p2 = p+m-2;
你这里p1永远大于p2,所以根本不会进入while循环里,你这里哪怕调用了上面的函数也是无意义的
第4个回答  2021-11-20
while(p1 < p2)
比较指针的大小,而不是所指向的值的大小?
int *p1 = p+m-1;
int *p2 = p+m-2;
没用上n,是否有问题?
学一学调试的基本操作吧
相似回答