-4

英語のアルファベット A から Z の値は 1 から始まるとしましょう。A = 1、B = 2、C = 3 などです。定数文字配列である人物の名前を受け取り、Alphapets の合計で整数値を返す関数を呼び出すプログラムを作成します。人の名前を const char 配列として渡す利点は何ですか?

4

2 に答える 2

2

他の誰かが非 const を取り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

利点の 1 つは、配列内の要素がその値を変更できないように保護されていることです。
たとえば、これは簡単なコードです。

int Your_function(const char * a)
{
    a[3]    =   'A'; // this statement causes compile error.
    // do something
    return 0;
}
于 2013-07-06T06:09:32.243 に答える