首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

C語言字元資料完整指南:常數、字串、轉義字元、符號常量與變數

     編輯:關於C語言

字元常數

定義:單引號括起的單一字元,如 'a'、'9'、'!'。
儲存本質:依 ASCII 碼值以整數(short)儲存,佔 1 byte。

ASCII 碼對照表(部分)

字元ASCII (十進位)
!33
048
149
957
A65
B66
a97
b98

字元常數可參與算術運算


'a' - 32;   // 97 - 32 = 65 ('A')
'A' + 32;   // 65 + 32 = 97 ('a')
'9' - 9;    // 57 - 9 = 48 ('0')

利用大小寫字母 ASCII 差值 32 可實現大小寫轉換。

關鍵區別:'9'(字元常數,ASCII 57)≠ 9(整數常數,值 9)。儲存方式、含義截然不同。

字串常數

定義:雙引號括起的字元序列,如 "China"、"C program"、"YES&NO"。
儲存機制:記憶體中自動在末尾補 \0(NULL,ASCII 0)作為結束標誌。
佔用空間:字元數 + 1 byte。

儲存圖解


"China" → [C][h][i][n][a][\0]  // 5 字元 + 1 結束符 = 6 bytes
"A"     → [A][\0]              // 1 字元 + 1 結束符 = 2 bytes
'a'     → [a]                  // 僅 1 byte

轉義字元

用於表示不可列印控制字元、特殊符號(單引號、雙引號、反斜線)。
形式:\ 後接字元或八/十六進位數。

常用轉義字元表

轉義字元意義ASCII
\n換行10
\t水平定位9
\v垂直定位11
\f換頁12
\r歸位13
\b退格8
\\反斜線92
\'單引號39
\"雙引號34
\0空字元0
\ddd三位八進位 ASCII-
\xhh兩位十六進位 ASCII-

使用規則

  1. 僅限小寫字母,每個轉義字元視為單一字元
  2. \v、\f 螢幕無效果,影響列印機
  3. 程式中處理不可列印字元慣用轉義字元表示
  4. 字元常數中需用 \'、\\;字串常數中需用 \"、\\

符號常量 #define

語法:#define 識別符 常量(前處理指令,以 # 開頭)
功能:編譯前以常量值替換所有識別符。
命名慣例:全大寫,區別於變數小寫。

範例


#define PI 3.1415926
#define TRUE 1
#define FALSE 0
#define STAR '*'

優點:提高可讀性、便於修改(僅改定義處)、語意自述。

字元變數

宣告:char c1, c2; — 各儲存單一字元。
指派:c1 = 'a'; c2 = 'b'; 或以 ASCII 整數指派:c1 = 97; c2 = 98;(等效)。

範例:小寫轉大寫


#include 

main() {
    char c1, c2;
    c1 = 97;  // 'a'
    c2 = 98;  // 'b'
    c1 = c1 - 32;  // 97-32=65 → 'A'
    c2 = c2 - 32;  // 98-32=66 → 'B'
    printf("%c%c", c1, c2);  // 輸出 AB
}

原理:ASCII 碼中小寫字母比大寫大 32('a' = 'A' + 32)。

字串輸入輸出函數

函數原型功能注意
getschar *gets(char *str)讀取一行(含空格)至 \n不檢查邊界,危險;建議用 fgets
putsint puts(const char *str)輸出字串並自動換行
scanfint scanf("%s", str)讀取單詞(遇空白結束)需 &str 或 str(陣列名即位址)
printfint printf("%s", str)格式化輸出字串需 \0 結束

字元/字串處理標準庫

  • strlen(str):字串長度(不含 \0)
  • strcpy(dest, src):複製字串(含 \0)
  • strcat(dest, src):串接字串
  • strcmp(s1, s2):比較字串(依 ASCII)
  • strchr(str, c)、strstr(s1, s2):搜尋字元/子字串

重點總結

  1. 字元常數 = 單引號 + 1 字元,儲存為 ASCII 整數,可參與運算
  2. 字串常數 = 雙引號 + 字元序列,記憶體自動補 \0,佔 n+1 bytes
  3. 'A' (1 byte) ≠ "A" (2 bytes) — 基本觀念必須釐清
  4. 轉義字元以 \ 開頭,表示控制字元與特殊符號
  5. #define 符號常量為前處理文字替換,非變數,值不可變
  6. 字元變數 char 僅儲存單一字元,不可存字串
  7. 大小寫轉換利用 ASCII 差值 32
  8. 輸入輸出:gets/puts 處理整行,scanf/printf 處理格式化單詞
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved