#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);}求输出结果,详细解及思路
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字符及以后的字符也就是efghputs和printf差不多 但只能打印字符串希望回答对您有所帮助!!! 看不明白的话还请您补充问题我再做解释 :)