首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

const疑惑,该怎么处理

2012-03-15 
const疑惑这句话怎么解释啊 ??如果参数作输出用,不论它是什么数据类型,也不论它采用“指针传递”还是“引用传

const疑惑

这句话怎么解释啊 ??

如果参数作输出用,不论它是什么数据类型,也不论它采用“指针传递”还是“引用传递”,都不能加const修饰,否则该参数将失去输出功能。


[解决办法]
意思就是说,如果参数作为输出功能,例如,


void f(char *out) {
out[0] = 'a';
out[1] = 'b';
}

char x[20];

f(x);

//现在x[0] == 'a', x[1] == 'b'

但是如果你加了const,

void f(const char *out) {
out[0] = 'a'; //错误,不能修改const类型数据
}

就是去了参数输出的功能咯。
[解决办法]

C/C++ code
int function(int para1, int para2, int *sum){  *sum = para1+para2;  return 0;}int function(int para1, int para2, const int *sum){  *sum = para1+para2; //这样是不能改变sum值  return 0;}
[解决办法]
输出并不一定是指打印到屏幕上,对函数来讲,函数的运行结果也可以叫做函数的输出。

例如

int add(int a, int b) {
return a+b;
}

int result = add(3,4);

这个函数的返回值就叫做输出。

函数只能返回一个变量,所以有时候单单凭函数返回是不能够处理函数的所有运行结果。我们需要通过函数参数,给函数一个变量,让函数的运行结果存储在该参数中。例如,

void add_array(int *a, int *b, int *c, int len) {
//a和b是int数组的输入,
//c负责输出
for (int i = 0; i < len; i++) {
c[i] = a[i]+b[i];
}
}

int a[] = { 1, 2, 3 };
int b[] = {4, 5, 6};
int c[3];
add_array(a, b, c, 3); 

//c的结果是 {5, 7, 9}的int数组。

上例,c是输出用的,不能加const,加了const就不能修改c数组的元素的值了,但是a和b是输入用,可以加const,更好的写法是,

void f(const int *a, const int *b, int *c, int len) {
//....
}

热点排行