2013-07-06 30 views
-3

讓我們說,在英文字母從1 A = 1 A到Z具有值開始,B = 2,C = 3等等。編寫一個調用函數的程序,該函數接受一個人的姓名,該人的姓名是常量字符數組,並返回一個帶有Alphapets總和的整數值。將const的數組名稱傳遞給const char數組有什麼好處?c編程ASCII值

+2

那麼,你會如何傳遞一個只讀字符串? – 2013-07-06 05:56:15

+1

這不是做你的功課。請告訴我們,你到目前爲止所嘗試過的,以及你卡在哪裏。 –

+0

我們可以通過給大大簡化這一程序'了'65,而不是1 –

回答

0

一個優點在於,一個陣列中的元件是由改變其值的保護。
例如,這裏是簡單的代碼。

int Your_function(const char * a) 
{ 
    a[3] = 'A'; // this statement causes compile error. 
    // do something 
    return 0; 
} 
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) 

我確定我傳遞的字符串不會被修改。

+1

@MrLister也許它會改成'「Zu Hao」',因爲我們給字符值加1而不是減1。但誰在乎?關鍵是它可以改變,我們不希望這樣。此外,爲什麼它會「返回垃圾」? – 2013-07-06 06:18:38

+1

@MrLister由於C標準並不保證'Z'的字符代碼在Y之後出現,所以對修改後的字符串進行辯論毫無意義。另外,你真誠地**認爲'//代碼計算alphas的總和'部分在這個例子中代表什麼? – 2013-07-06 06:22:04

+0

@Mr李斯特右。但這顯然是一個錯字。 –