#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.的条件直接退出了函数。
你需要看看要实现啥在改一下。
不是没调用,而是函数写得不对:
#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;
}
本回答被网友采纳