-4

假设英文字母 A 到 Z 的值从 1 开始。A = 1,B = 2,C = 3 等等。编写一个程序,该程序调用一个函数,该函数接受一个人的姓名,该姓名是一个常量字符数组,并返回一个带有字母总和的整数值。将人名作为 const char 数组传递有什么好处?

4

2 回答 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 回答