#include<stdio.h>
void inverse(int *p, int n)
{
int *q;
q = p + n – 1;
for (;p < q;p++, q–)
{
int t;t = *q;*q = *p;*p = t;
}
}
int main(void)
{
int a[] = { 1,3,5,7,9 };
int *m, k;
for (m = a,k=0;k<5;k++)
printf(“%d”, *m++);
puts(“”);
inverse(a, 5);
for (m = a,k=0;k<5;k++)
printf(“%d”, *m++);
puts(“”);
return 0;
}
这段代码输出的结果为13579
97531
但是假如对for循环限制条件进行修改
int n=5;
改为for(m=a;n>0;n–)
感觉逻辑上没什么错误可输出结果只有13579。
求赐教!
void inverse(int *p, int n)
{
int *q;
q = p + n – 1;
for (;p < q;p++, q–)
{
int t;t = *q;*q = *p;*p = t;
}
}
int main(void)
{
int a[] = { 1,3,5,7,9 };
int *m, k;
for (m = a,k=0;k<5;k++)
printf(“%d”, *m++);
puts(“”);
inverse(a, 5);
for (m = a,k=0;k<5;k++)
printf(“%d”, *m++);
puts(“”);
return 0;
}
这段代码输出的结果为13579
97531
但是假如对for循环限制条件进行修改
int n=5;
改为for(m=a;n>0;n–)
感觉逻辑上没什么错误可输出结果只有13579。
求赐教!
解决方案
20
n–
下个循环要重新初始化,不然直接退出了
下个循环要重新初始化,不然直接退出了