C语言程序题指针

来源:百度知道 编辑:UC知道 时间:2024/05/16 23:51:38
27.下面程序运行的结果是
#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);
}

A)7654321 B)1711717
想不通答案为什么是B。大家帮忙看看

你查一下后缀的加加减减和解除引用符*的运算优先级就知道了。

在子函数fun中,sl为字符串w的起始地址,s2为字符串的结束地址(字符'\O'除外),当执行循环结束循环,w="1711717"。
*s2=t;}