C 速查手冊
1.3 識別字
識別字 (identifier) 為程式語言 (programming language) 中依程式 (program) 需求自行定義的名稱,舉凡程式中所用的變數 (variable) 名稱、函數 (function) 名稱、陣列 (array) 名稱、結構 (structure) 名稱、聯合 (union) 名稱、列舉常數等都屬於識別字,標準程式庫 (standard library) 與第三方程式庫 (third-party library) 其內所用的名稱也屬於識別字,每一種程式庫都有各自的命名習慣 (naming convention) ,自行定義名稱時應該避免與程式庫中的名稱衝突。
C 語言定義識別字可用的符號有底線、大小寫英文字母、數字,如下
_ | ||||||||||||
a | b | c | d | e | f | g | h | i | j | k | l | m |
n | o | p | q | r | s | t | u | v | w | x | y | z |
A | B | C | D | E | F | G | H | I | J | K | L | M |
N | O | P | Q | R | S | T | U | V | W | X | Y | Z |
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
其中,數字不能用作識別字的開頭,單一識別字裡不允許有空格,關鍵字 (keyword) 屬於保留字,因此也不能用為自行定義的名稱。通常編譯器 (compiler) 至少能讀取名稱的前 31 個字元,但外部名稱可能只能保證前六個字元有效。
識別字名稱最好跟用途有關,同時容易辨識、打字。以下列出常見的合法變數名稱
//以下用為一般變數
integer1
sum
grade
seed
//以下用為迴圈控制變數
i
j
nPtr
xp
//以下為大寫駝峰型
MyCard
ListNode
StartItem
CurrentPtr
//以下為小寫駝峰型
bankBalance
stringPtr
tokenPtr
lastName
//以下為用底線連結
leep_year
new_ptr
wrong_way
FREQUENCY_SIZE
//常數通常全用大寫字母
PI
SIZE
INT_MIN
DAY
以下列出常見的合法函數名稱
//以下用為一般函數
factorial()
fibonacci()
cube()
sum()
//以下為大寫駝峰型
ArrayInit()
BubbleSort()
LinearSearch()
PrintRow()
//以下為小寫駝峰型
roundToInteger()
roundToTenths()
integerPower()
qualityPoints()
//以下為用底線連結
what_is_this()
hello_world()
convert_uppercase()
binary_search()
//以下為標準程式庫中的例子
fmod()
isalpha()
atof()
timegm()
以下為常見的合法陣列名稱
//以下用為一般陣列
n[]
frequency[]
string1[]
suit[]
//以下為大寫駝峰型
MyArray[]
NewWeek[]
TempS[]
StackInplement[]
//以下為小寫駝峰型
studentGrades[]
bPtr[]
wDeck[]
ballDirection[]
//以下為用底線連結
first_name[]
temp_array[]
game_point[]
key_word[]
以下列出常見的合法結構及聯合名稱
//以下用為一般的結構或聯合
example
number
Card
employee
//以下為大寫駝峰型
QueueNode
StudentNode
BullCow
UType
//以下為小寫駝峰型
stackNode
binaryTreeNode
bitCard
symTab
//以下為用底線連結
key_tab
tree_node
n_list
u_tag
以下列出常見的合法列舉常數名稱
//以下用為一般的列舉常數
enum months {JAN = 1, FEB, MAR, APR, MAY, JUN, JUL, AUG, SEP, OCT, NOV, DEC};
enum weeks {SUN, MON, TUE, WED, THU, FRI, SAT};
enum boolean {NO, YES};
enum escape {BELL = '\a', TAB = '\t', NEWLINE = '\n', RETURN = '\r'};