void fun(char *w,int m) { char s,*p1,*p2; p1=w;p2=w+m-1; while(p1<p2) { s=*p1++;*p1=*p2--;*p2=s; } } main() { char a[]="ABCDEFG"; fun(a,strlen(a)); puts(a); }
时间: 2024-04-10 17:29:46 浏览: 162
C语言中的函数指针基础学习教程
这段代码是一个函数`fun`和一个主函数`main`的示例。函数`fun`的作用是将字符串中的字符进行逆序。主函数`main`定义了一个字符数组`a`,并将其作为参数传递给函数`fun`进行逆序操作,然后使用`puts`函数输出逆序后的字符串。
具体的执行过程如下:
1. 定义字符变量`s`和指针变量`p1`、`p2`,并将指针`p1`指向字符串首地址,将指针`p2`指向字符串尾地址。
2. 进入循环,判断指针`p1`是否小于指针`p2`。
3. 如果满足条件,执行以下操作:
- 将指针`p1`所指向的字符赋值给变量`s`;
- 将指针`p1`后移一位,将指针`p2`前移一位;
- 将变量`s`赋值给指针`p2`所指向的字符。
4. 循环结束后,字符串中的字符已经完成反转。
5. 主函数中定义了字符数组`a`并初始化为"ABCDEFG",然后调用函数`fun(a, strlen(a))`对数组进行逆序操作。
6. 最后使用`puts(a)`函数输出逆序后的字符串。
注意:这段代码中存在一个潜在的问题,即在执行 `*p1=*p2--` 时可能会发生未定义行为,因为 `*p1` 和 `*p2` 是同一个地址,修改同一位置的值可能会导致不可预料的结果。建议修改为 `s=*p1;*p1=*p2;*p2=s; p1++; p2--;` 来避免这个问题。
阅读全文