读书人

c++刚入门关于函数参数的 const 和

发布时间: 2012-09-23 10:28:11 作者: rapoo

c++刚入门,关于函数参数的 const 和 volatile 的问题
在看c++入门教程,看到函数的参数方面的。
void fun1(const int i)
{
这里i是不能改变的,哪为什么还要传参呢?倒不如在这里定义一个局部的,反正都是不能改变的。
}


还有 volatile 的用法。

感觉就直接写个形参不就行了??

这两个关键词有什么好处?特别用处??能不能举个例子??

谢谢,我新接触c++语言。

[解决办法]
不能改变与可从外部拷贝进来,完全没有矛盾啊

[解决办法]
1、const修饰参数非常有意义,尤其是如果传入的是指针,而函数只需要读取它的内容,那么用const的话就不会因为误操作而改写该指针所指向的内容了;
2、volatile在嵌入式领域应用很广,经过它修饰过的变量,编译器不会去作优化,这样可以保证该变量所表明的硬件端口可以被准确的控制,否则比较x=0;x=2;这样的语句,编译器直接就优化为x=2;了,这样相当于少了一次端口操作。
[解决办法]
void fun1(const int i)
{
i = 5; //错!
}

void fun1(const int &i)
{
i = 5; //错! cosnt & 既省油, 安全.
}
void fun1(int &i)
{
i = 5; // 其他方法? int *pi
}
[解决办法]
是的。

探讨

那先讨论const的,我不用这个关键词,我在函数体内,我根本不去改变它的值,那这样有没有const这个声明,是一样的效果了???

我就是想不明白,正常状态下有啥用,有啥好处,或者在某一些情况下的好处。




to:2楼,图哥
我看到volatile这个有说明,主要是在寄存器这方面。一般在嵌入式方面有影响吧??

[解决办法]
探讨

那先讨论const的,我不用这个关键词,我在函数体内,我根本不去改变它的值,那这样有没有const这个声明,是一样的效果了???

我就是想不明白,正常状态下有啥用,有啥好处,或者在某一些情况下的好处。




to:2楼,图哥
我看到volatile这个有说明,主要是在寄存器这方面。一般在嵌入式方面有影响吧??

[解决办法]
探讨

那先讨论const的,我不用这个关键词,我在函数体内,我根本不去改变它的值,那这样有没有const这个声明,是一样的效果了???

我就是想不明白,正常状态下有啥用,有啥好处,或者在某一些情况下的好处。




to:2楼,图哥
我看到volatile这个有说明,主要是在寄存器这方面。一般在嵌入式方面有影响吧??

[解决办法]
探讨

引用:

void fun1(const int i)
{
i = 5; //错!
}

void fun1(const int &i)
{
i = 5; //错! cosnt & 既省油, 安全.
}
void fun1(int &i)
{
i = 5; // 其他方法? int *pi
}

这……

[解决办法]
为了防止程序员不经意间修改变量,而且i可能是一个其他类或函数的标志
[解决办法]
慢慢学 一段时间过后你就会慢慢理解了 顺便接个分

读书人网 >C++

热点推荐