C++学习心得总结

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)、对辗转相除法求最大公约数的理解

如果AB都能被C整除

那么

如果A<BA%B=A

可以被C整除。

如果A>BA=nB+D;A%B=D

AnB都能被C整除,所以D也可以被C整除。

下一步

如果A<B,第二步就把AB换位了,

A>B

如果A>B,由D<B,第二步把AB都变小了。

B>D

这两种情况虽然把数换了,但是两个数的最大公约数和原来两个数是一样的。

循环

依次类推,最后,

D=0的时候,

B就是他们的公约数

也就是原来的AB的最大公约数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;

       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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值