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++ Google Test 学习心得总结-1
- C/C++ 多线程的学习心得总结
- C++学习笔记&总结
- C/C++日常学习总结(第十六篇)分析IA-64和IA-32位机器上同一个程序运行,前者报错,后者正常
- c++学习的总结
- C++ 学习笔记(一些新特性总结3)
- c++ 学习---类的设计总结
- 个人的CodeSmith和.NetTiers的学习心得及经验总结
- 学习C++的心得记录
- C++学习,总结二(模拟鼠标键盘操作和进程之间的通信)
- C++学习框架 总结(简单步骤)
- C/C++日常学习总结(第八篇)winsock建立连接的步骤&窗口的生成
- C++学习总结(三)
- C++学习心得
- 总结了一些学习c++的网址
- Android开源:数据库ORM框架GreenDao学习心得及使用总结
- C++学习笔记-类相关问题总结
- Android开源:数据库ORM框架GreenDao学习心得及使用总结
- C++学习总结系列
- 【C++学习与应用总结】1: 两种变长参数函数比较