C编程高手进

来源:百度知道 编辑:UC知道 时间:2024/05/28 14:24:38
#include <stdio.h>
#include <string.h>
fun(char *w,int n)
{
char t,*s1,*s2;
s1=w;s2=w+n-1;
while(s1<s2)
{t=*s1++;
*s1=*s2--;
*s2=t;
}
}
main()
{
{
char*p;
p="1234567";
fun(p,strlen(p));
puts(p);
}
getch();
}
输出是什么?

首先答案要对,对了说明下为什么得出这个答案

结果是:1711717
首先定义一个字符串“1234567”
一个字符指针p指向刚刚定义的字符串。
将此指针送入子函数fun中处理。
在子函数fun中,定义了字符变量t,字符指针s1 和s2;
将从主函数中输入的“1234567”赋给指针s1 此时s1 指向字符“1”,
将s2指向“1234567”的最后一个字符“7”。
下面进行while循环,即当s1小于s2的时候将s1指向的字符传递给变量t,并指向下一个数字。再将s2指向的字传递给s1,并将s2递减,最后将t值还给s2所指向的字符单元。完成交换后进行下一轮,直到s1和s2指针汇合。要注意的是期间s1在完成第一次交换前已经被加1,因此,此程序并不能将整个字符串转置,仅仅将1和7这两个字符填入字符数组中。