您的位置:首页 > 编程语言 > C语言/C++

C++学习心得总结

2009-08-08 19:57 393 查看

(1)、对函数的引用变量的实验

const引用参数可以保证实参的值不被修改,但是进制却可以修改。
void display(const int &aa)
{
       cout<<aa<<endl<<dec<<aa<<endl<<oct<<aa<<endl<<hex<<aa<<endl;
       //a++;
}
void main()
{
       int a=21;
       display(a);
       cout<<a<<endl;
}
以上代码执行的时候输出的最后是
21
21
25
15
15
主函数里的输出是15,也就说明,虽然const引导参数不能改变实参的值,但是可以改变实参的进制,而且所做的改变会被保留下来。
而且如果主函数改成
int a=21;
int b=15;
       display(a);
       cout<<a<<endl;
       a+=b;
       cout<<a<<endl;
       cout<<b<<endl;
则最后输出的b的值为f,也为十六进制
也就是说,被改变的不是数字本身,而是输出流的格式控制。

(2)、对辗转相除法求最大公约数的理解

如果A和B都能被C整除
那么
如果A<B,A%B=A,
可以被C整除。
如果A>B,A=nB+D;A%B=D,
A和nB都能被C整除,所以D也可以被C整除。
下一步
如果A<B,第二步就把A和B换位了,
A>B。
如果A>B,由D<B,第二步把A和B都变小了。
B>D。
这两种情况虽然把数换了,但是两个数的最大公约数和原来两个数是一样的。
循环
依次类推,最后,
当D=0的时候,
B就是他们的公约数
也就是原来的A和B的最大公约数C

(3)、对调用函数返回指针和引用的的实验

函数的形参为指针变量时,可以返回指针,如果形参不是指针,返回的是否还能是指针呢?
int *max(int x,int y)
{
       if(x>y)
              return x;
       else
              return y;
}
void main()
{
       int a=10,b=20;
       cout<<*max(a,b)<<endl;
}
编译的时候出错,提示:
cannot convert from 'int' to 'int *'
如果换过来
int max(int *x,int *y)
{
       *x+=1;
       *y+=1;
       if(*x>*y)
              return *x;
       else
              return *y;
}
void main()
{
       int a=10,b=20;
       cout<<max(&a,&b)<<endl;
}
则可以编译通过
输出21
也就是说,如果想返回指针的话,输入的实参也要是指针。但是以指针为参数的函数却不一定要返回指针。
如果是引用则不同。
int & max(int x,int y)
{
       x++;
       y++;
       if(x>y)
              return x;
       else
              return y;
}
void main()
{
       int a=10,b=20;
   
9b16
    cout<<max(a,b)<<endl;
}
是可以通过编译的
输出21
int max(int &x,int &y)
{
       x++;
       y++;
       if(x>y)
              return x;
       else
              return y;
}
void main()
{
       int a=10,b=20;
       cout<<max(a,b)<<endl;
}
也是可以编译通过的。
输出21
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  c++ c