假设英文字母 A 到 Z 的值从 1 开始。A = 1,B = 2,C = 3 等等。编写一个程序,该程序调用一个函数,该函数接受一个人的姓名,该姓名是一个常量字符数组,并返回一个带有字母总和的整数值。将人名作为 const char 数组传递有什么好处?
问问题
811 次
2 回答
2
假设其他人为我提供了一个接受非常量char *
并完成工作的函数。函数实际实现的是这样的:
int get_int_sum(char *name)
{
int sum;
//codes to calculate sum of alphas
name[0] += 1;
//continue
return sum;
}
当我使用调用函数时
char my_name[] = "Yu Hao";
int reuslt = get_int_sum(my_name);
即使我得到了我想要的结果,也会在我不通知的情况下my_name
更改。"Zu Hao"
但是,如果一个函数的原型为
int get_int_sum(const char*name)
我确定我传递的字符串不会被修改。
于 2013-07-06T06:10:00.670 回答
0
一个优点是数组中的元素不受更改其值的影响。
例如,这里是简单的代码。
int Your_function(const char * a)
{
a[3] = 'A'; // this statement causes compile error.
// do something
return 0;
}
于 2013-07-06T06:09:32.243 回答