注册 登录
编程论坛 C++教室

本人是初学者,请高手指教

leexuezhe 发布于 2011-11-24 14:21, 551 次点击
#include<iostream.h>
#include<string.h>
int year=2003;
char M[]="ABCD";
int Get1() { return(year); }
int &Get2() { return(year); }
char Get3(int a) {return(M[a]);}
char *Get4(int a) {return(M+a);}
char &Get5(int a) {return(M[a]);}
void main( )
{
   int b;
   char K[10]={0};
   Get2( )++;
   b=Get1( )+Get2( );
   K[0]=Get3(1);
   K[1]=Get5(0);
   Get5(2)= 'Y';
   strcpy(K+2, M+1);
   Get5(1)+=32;
   cout <<"M="<<M;
   cout <<"K="<< K << "b=" << b << endl;
}
这个程序的过程看不懂,请高手详解,先谢谢了!
4 回复
#2
hxcet2011-11-25 09:56
Get()函数是对year的一个引用,故Get2()++就相当于year++,所以主函数里,执行完Get2()++后,year=2004,而Get1()返回的也是year,所以最后的输出b=Get1()+Get2()=2004+2004=4008.
K[0]=Get3(1)即为K[0]=M[1]='B',K[1]=Get5(0)即为K[1]=M[0]='A',而Get5(2)='Y'即是M[2]='Y',即此时M[]="ABYD",接下来的strcpy(K+2, M+1)是指将M[1]及M[1]以后的字符复制为K[2]及K[2]以后的字符,即K[2]=M[1]='B',K[3]=M[2]='Y',K[4]=M[3]='D'.故最终K[]="BABYD".
Get5(1)+=32意思是M[1]+=32,故M[1]='B'+32='b',所以最终M[]="AbYD".
#3
leexuezhe2011-11-29 12:55
谢谢楼主
#4
leexuezhe2011-11-29 13:34
再次感谢
#5
梦ambious2011-11-29 14:54
这段程序从哪看到的,上面有好多错误,比如说#include<iostream.h>,.h是C语言的扩展名,当然在C++中也能用,可是那也应该用<stream.h>或者用<iostream>,而不是<iostream.h>,还有string类字符串是C++独有的,根本不用在其后面加上.h扩展名。底下的int year=2003;你是放在主函数外面的,也就是全局变量,应在前面加上const。意思嘛,前面说的很清楚,不过你还是要注意一下编程规范。
1