在fun中,数组S等于main中的str,即s[]="ABCDE"
c = s[strlen(s)/2]中,strlen(s)的值为5,5/2=2.5,但两个数都是整型,所以结果强制转换为整形,即strlen(5)/2=2。
那么c = s[strlen(2)/2]即为c = s[2];根据s[]="ABCDE",s[0]='A',s[1]='B',s[2]='C',s[3]='D',s[4]='E';
fun返回的是char &c,所以main中cout出的ch值为C。
回答完毕!
#include
#include
using namespace std;
void fun(const char *s,char&c){c=s[strlen(s)/2];}
int main(){
char str[]="ABCDE";
char ch;
fun(str,ch);
cout<
}
你的程序有问题。char &c为引用,所以fun中strlen(s)是数组长度c=s[5/2]=s[2];
因为是&c引用,所以ch=c=s[2];输出C,这个是讲引用“&”的应用
strlen(s) 为5(ABCDE)
strlen(s)/2为2
即取第三个字符(下标从0开始)
因此为C
一楼讲得比较到位,
但char ch=str[];这句有错哈,不信编译一下试试。
请改成char ch;