#include<stdio.h> #include<string.h> char *fun(char *t) { char *p=t; return(p+st

#include<stdio.h>
#include<string.h>
char *fun(char *t)
{ char *p=t;
return(p+strlen(t)/2;
}
main()
{ char *str="abcdefgh";
str=fun(str);
puts(str);
}
求输出结果,详细解及思路
最新回答
天空天然蓝

2024-05-21 09:21:36

VC6实际编译 结果过efgh

#include<stdio.h>
#include<string.h>
char *fun(char *t)
{ char *p=t;
return(p+strlen(t)/2;
}
main()
{ char *str="abcdefgh";
str=fun(str);
puts(str);
}

解释:程序开始,从main函数内开始执行,首先执行的函数是str=fun(str)
str="abcdefgh",传递到char* t,
char *p=t;这样指向char的指针p包含的是t的首地址 str[0],
p+strlen(t)/2; t的长度是8 除以2 等于4
所以 p+strlen(t)/2 就是str[4] 即e字符那个位置
所以返回的就是e字符及以后的字符
也就是efgh
puts和printf差不多 但只能打印字符串

希望回答对您有所帮助!!! 看不明白的话还请您补充问题我再做解释 :)
中分一哥腰不好

2024-05-21 01:06:05

输出:efgh