首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

C 語言大小寫轉換函數錯誤:參數傳值無法修改原字元,需改用指標

     編輯:程式設計綜合問答

錯誤代碼

void tolower(char ch) {
    if (ch >= 'A' && ch <= 'Z')
        ch += 32;   // 只修改區域副本
}

呼叫 tolower(ch) 時,ch 以**傳值**方式傳入,函數內修改不影響原變數。

正確寫法:傳址 (指標)

void tolower(char *ch) {
    if (*ch >= 'A' && *ch <= 'Z')
        *ch += 32;  // 透過指標修改原記憶體
}

// 呼叫
tolower(&ch);

替代方案

  • 回傳轉換後字元:char tolower(char ch) { ... return ch; },呼叫 ch = tolower(ch);。
  • 直接使用標準庫 <ctype.h> 的 tolower() (注意:標準庫版本行為與地區設定相關)。

關鍵觀念

C 語言**只有傳值呼叫**,要在函數內修改呼叫端變數,必須傳遞該變數的**位址 (指標)**。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved