
- C 程式設計教程
- C - 首頁
- C 語言基礎
- C - 概述
- C - 特性
- C - 歷史
- C - 環境設定
- C - 程式結構
- C - Hello World
- C - 編譯過程
- C - 註釋
- C - 詞法單元
- C - 關鍵字
- C - 識別符號
- C - 使用者輸入
- C - 基本語法
- C - 資料型別
- C - 變數
- C - 整數提升
- C - 型別轉換
- C - 型別強制轉換
- C - 布林值
- C 語言中的常量和字面量
- C - 常量
- C - 字面量
- C - 轉義序列
- C - 格式說明符
- C 語言中的運算子
- C - 運算子
- C - 算術運算子
- C - 關係運算符
- C - 邏輯運算子
- C - 位運算子
- C - 賦值運算子
- C - 一元運算子
- C - 自增和自減運算子
- C - 三元運算子
- C - sizeof 運算子
- C - 運算子優先順序
- C - 其他運算子
- C 語言中的決策
- C - 決策
- C - if 語句
- C - if...else 語句
- C - 巢狀 if 語句
- C - switch 語句
- C - 巢狀 switch 語句
- C 語言中的迴圈
- C - 迴圈
- C - while 迴圈
- C - for 迴圈
- C - do...while 迴圈
- C - 巢狀迴圈
- C - 無限迴圈
- C - break 語句
- C - continue 語句
- C - goto 語句
- C 語言中的函式
- C - 函式
- C - 主函式
- C - 按值呼叫函式
- C - 按引用呼叫函式
- C - 巢狀函式
- C - 可變引數函式
- C - 使用者自定義函式
- C - 回撥函式
- C - return 語句
- C - 遞迴
- C 語言中的作用域規則
- C - 作用域規則
- C - 靜態變數
- C - 全域性變數
- C 語言中的陣列
- C - 陣列
- C - 陣列的特性
- C - 多維陣列
- C - 將陣列傳遞給函式
- C - 從函式返回陣列
- C - 可變長陣列
- C 語言中的指標
- C - 指標
- C - 指標和陣列
- C - 指標的應用
- C - 指標運算
- C - 指標陣列
- C - 指向指標的指標
- C - 將指標傳遞給函式
- C - 從函式返回指標
- C - 函式指標
- C - 指向陣列的指標
- C - 指向結構體的指標
- C - 指標鏈
- C - 指標與陣列
- C - 字元指標和函式
- C - 空指標
- C - void 指標
- C - 懸空指標
- C - 解引用指標
- C - 近、遠和巨大指標
- C - 指標陣列的初始化
- C - 指標與多維陣列
- C 語言中的字串
- C - 字串
- C - 字串陣列
- C - 特殊字元
- C 語言中的結構體和聯合體
- C - 結構體
- C - 結構體和函式
- C - 結構體陣列
- C - 自引用結構體
- C - 查詢表
- C - 點 (.) 運算子
- C - 列舉 (enum)
- C - 結構體填充和打包
- C - 巢狀結構體
- C - 匿名結構體和聯合體
- C - 聯合體
- C - 位域
- C - typedef
- C 語言中的檔案處理
- C - 輸入 & 輸出
- C - 檔案 I/O (檔案處理)
- C 預處理器
- C - 預處理器
- C - 編譯指示
- C - 預處理器運算子
- C - 宏
- C - 標頭檔案
- C 語言中的記憶體管理
- C - 記憶體管理
- C - 記憶體地址
- C - 儲存類
- 其他主題
- C - 錯誤處理
- C - 可變引數
- C - 命令執行
- C - 數學函式
- C - static 關鍵字
- C - 隨機數生成
- C - 命令列引數
- C 程式設計資源
- C - 問答
- C - 快速指南
- C - 速查表
- C - 有用資源
- C - 討論
C - 識別符號
C 語言中的識別符號有助於標識 C 程式碼中的變數、常量、函式等。C 語言是一種高階計算機語言,允許您使用名稱來引用記憶體位置,而不是使用其二進位制或十六進位制地址。
C 識別符號
識別符號是使用者定義的名稱,用於方便地引用記憶體。它也用於定義程式中的各種元素,例如函式、使用者定義型別、標籤等。因此,識別符號是幫助程式設計師更方便地使用程式設計元素的名稱。
當使用識別符號定義變數或函式時,C 編譯器會為其分配記憶體,並將記憶體位置與識別符號關聯起來。因此,每當在指令中使用識別符號時,C 編譯器都可以訪問其關聯的記憶體位置。例如,當我們宣告一個名為 age 的變數併為其賦值(如下圖所示)時,編譯器會為其分配一個記憶體位置。

即使程式設計師可以使用自己選擇的識別符號來命名變數或函式等,也有一些規則需要遵循才能形成有效的識別符號。
C 識別符號的命名規則
以下是形成識別符號的規則:
- 關鍵字不能用作識別符號,因為它們是預定義的。
- 在 C 語言使用的字元集中,只有字母(大寫和小寫)和下劃線符號 (_) 允許在識別符號中使用。這意味著您不能使用標點符號等字元作為識別符號的一部分。
- 識別符號必須以字母(大寫或小寫)或下劃線開頭。這意味著數字不能作為識別符號的第一個字元。
- 後續字元可以是字母、數字或下劃線。
- 同一個識別符號不能用作兩個實體的名稱。識別符號只能在其當前作用域中使用一次。
根據上述規則,有效和無效識別符號的一些示例如下:
有效的 C 識別符號
age, Age, AGE, average_age, __temp, address1, phone_no_personal, _my_name
無效的 C 識別符號
Average-age, my name, $age, #phone, 1mg, phy+maths
C 識別符號示例
以下程式顯示一個錯誤:
#include <stdio.h> int main () { /* variable definition: */ int marks = 50; float marks = 65.50; printf("%d %f", marks, marks); return 0; }
錯誤
main.c: In function 'main': main.c:7:10: error: conflicting types for 'marks'; have 'float' 7 | float marks = 65.50; | ^~~~~ main.c:6:8: note: previous definition of 'marks' with type 'int' 6 | int marks = 50; | ^~~~~ main.c:8:13: warning: format '%d' expects argument of type 'int', but argument 2 has type 'double' [-Wformat=] 8 | printf("%d %f", marks, marks); | ~^ ~~~~~ | | | | int double | %f
- 識別符號區分大小寫,因此 age 與 AGE 不相同。
- ANSI 標準識別識別符號的長度為 31 個字元。雖然您可以選擇一個具有更多字元的名稱,但只有前 31 個字元會被識別。因此,您可以形成一個有意義且具有描述性的識別符號。
C 識別符號的作用域
在 C 語言中,識別符號的作用域是指宣告識別符號並可以使用/訪問它的位置。識別符號有兩個作用域
全域性識別符號
如果在任何函式宣告之前在外部聲明瞭一個識別符號,則將其稱為全域性(外部)識別符號。
示例
#include <stdio.h> int marks= 100; // external identifier int main() { printf("The value of marks is %d\n", marks); }
輸出
The value of marks is 100
這是因為 marks 在任何塊之外定義,所以它是外部識別符號。
區域性識別符號
另一方面,任何函式內部的識別符號都是區域性(內部)識別符號。
示例
#include <stdio.h> int main() { int marks= 100; // internal identifier printf("The value of marks is %d\n", marks); }
輸出
The value of marks is 100
這是因為 marks 在 main 函式內部定義,所以它是內部識別符號。
不同型別 C 識別符號的示例
識別符號也可以出現在函式的前向宣告中。但是,函式的宣告簽名應該與定義匹配。
變數識別符號示例
int marks1 = 50, marks2 = 60; float avg = (float) (marks1+marks2)/2;
函式識別符號示例
int average(int marks1, int marks2) { return (float) (marks1+marks2)/2; }
使用者定義型別識別符號示例
struct student { int rollno; char *name; int m1,m2,m3; float percent }; struct student s1 = {1, "Raju", 50, 60, 70, 60.00};
typedef 識別符號示例
struct student { int rollno; char *name; int m1,m2,m3; float percent }; typedef struct student STUDENT; STUDENT s1 = {1, "Raju", 50, 60, 70, 60.00};
標籤識別符號示例
#include <stdio.h> int main() { int x=0; begin: x++; if (x>=10) goto end; printf("%d\n", x); goto begin; end: return 0; }
輸出
1 2 3 4 5 6 7 8 9
列舉識別符號示例
#include <stdio.h> enum week{Mon=10, Tue, Wed, Thur, Fri=10, Sat=16, Sun}; int main() { printf("The value of enum week: %d\n",Mon); return 0; }
輸出
The value of enum week: 10
因此,識別符號在C 程式中隨處可見。為程式碼元素(如變數或函式)選擇正確的識別符號對於增強程式的可讀性、除錯性和文件化非常重要。
廣告