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

C 語言定義與宣告的差異:記憶體配置、作用域與連結屬性

     編輯:關於C語言

核心定義

定義

  • 編譯器配置記憶體空間、建立實體
  • 同一作用域內只能出現一次
  • 變數定義:int a = 10; (配置 4 bytes、初始化)
  • 函式定義:提供函式本體 int foo() { return 1; }

宣告

  • 告訴編譯器「這個名稱已存在於其他地方」或「預留這個名稱」
  • 不配置記憶體
  • 可重複出現多次
  • 兩種語意:
    1. 外部引用:extern int a; — 告知編譯器 a 在其他編譯單元定義
    2. 前向宣告:void func(int, char); — 預留函式簽章,允許先呼叫後定義

關鍵差異對照表

特性定義宣告
記憶體配置是否
同一作用域重複禁止允許
初始化可初始化不可初始化 (extern 除外)
函式提供本體 { ... }僅簽章 ;

經典範例

// file1.c
int global = 10;          // 定義 (外部連結)
static int internal = 5;  // 定義 (內部連結)

void func() { ... }       // 定義

// file2.c
extern int global;        // 宣告:引用 file1.c 的 global
// extern int internal;   // 錯誤:internal 為內部連結,不可跨檔引用

void func();              // 宣告:前向宣告,允許在定義前呼叫
func();                   // 呼叫

《C 語言深度解析》總結:定義建立實體、宣告建立關聯。掌握此區別是理解連結模型、避免重複定義錯誤、設計模組化程式的基石。

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