C語言中 c和 h有什麼區別,C語言中標頭檔案中 h 和「 h」的區別?

2021-05-31 13:15:06 字數 6143 閱讀 7295

1樓:暴素芹區甲

c語言的原始檔分為兩種:

1、.c檔案,以c為副檔名,一般儲存具體功能的實現;

2、.h檔案,稱為標頭檔案,一般儲存型別的定義,函式的宣告等。

通常,標頭檔案被.c檔案包含,使用#include語句。但值得注意的是,這只是一種約定,而非強制。

事實上,將宣告寫在.c檔案,比如a.c,然後#include "a.c"

同樣是合法的。

而把.h檔案,內部寫入函式實現,再在.c檔案中引用,也是編譯器允許的。

所以,.c與.h的區分,本質上是一種約定。一名合格的軟體開發人員,也要遵循這個約定,增加**的可讀性和維護性。

c語言中#include ***.c和***.h有什麼區別?

2樓:河北藍楓科技

區分在實際使用中並沒有什麼影響,但是 .h 主要放一些巨集定義,.c放程式**,這樣做對以後程式香梅的維護和移植就比較方便了,這樣做只是形成一個良好的**書寫規範。

3樓:易火純蓮

寫了三年**了,第一次遇到#include "***.c"忍不住回答一下這個問題。

首先 .h 標頭檔案,主要提供要對外匯出的符號。 .c 原始檔,主要提供實現以及實現內部的符號。兩者從功能上不一樣,但在特定的情況下互換也可以編譯通過。

例如,在test.c 中實現了一個test()函式。在source1.

c中#include "test.c",然後呼叫test()是沒有一點問題的。但是如果在source1.

c和source2.c中都#include "test.c",則大多數編譯器下會無法通過編譯。

因為test()重定義了。

#include "***.c"主要還是應用於較大規模的軟體中的配置檔案,來決定哪些source參與編譯,至於那些不需要的,則可以輕易加字首//

c語言中 .c和.h有什麼區別

4樓:

c語言的原始檔分為兩種:

1、.c檔案,以c為副檔名,一般儲存具體功能的實現;

2、.h檔案,稱為標頭檔案,一般儲存型別的定義,函式的宣告等。

通常,標頭檔案被.c檔案包含,使用#include 語句。

但值得注意的是,這只是一種約定,而非強制。

事實上,將宣告寫在.c檔案,比如a.c,然後#include "a.c"

同樣是合法的。

而把.h檔案,內部寫入函式實現,再在.c檔案中引用,也是編譯器允許的。

所以,.c與.h的區分,本質上是一種約定。一名合格的軟體開發人員,也要遵循這個約定,增加**的可讀性和維護性。

5樓:蝌蚪聰明頂呱呱

.c是 c 語言程式檔案,是可以被編譯然後執行的檔案;

.h 字尾是 c 語言程式庫的檔案,是可以在 c 語言程式中被包含,但是不能編譯並執行的檔案。

c語言中 .c和.h有什麼區別

6樓:大野瘦子

一、意思不同

.h中一般放的是同名.c檔案中定義的變數、陣列、函式的宣告,需要讓.c外部使用的宣告。

.c檔案一般放的是變數、陣列、函式的具體定義。

二、用法不同

.c檔案,以c為副檔名,一般儲存具體功能的實現。

.h檔案,稱為標頭檔案,一般儲存型別的定義,函式的宣告等。通常,標頭檔案被.c檔案包含,使用#include 語句。但值得注意的是,這只是一種約定,而非強制。

三、作用

如果在h檔案中實現一個函式體,那麼如果在多個c檔案中引用它,而且又同時編譯多個c檔案,將其生成的目標檔案連線成一個可執行檔案,在每個引用此h 檔案的c檔案所生成的目標檔案中,都有一份這個函式的**,如果這段函式又沒有定義成區域性函式,那麼在連線時,就會發現多個相同的函式,就會報錯。

如果在h檔案中定義全域性變數,並且將此全域性變數賦初值,那麼在多個引用此h檔案的c檔案中同樣存在相同變數名的拷貝,關鍵是此變數被賦了初值,所以編 譯器就會將此變數放入data段,最終在連線階段,會在data段中存在多個相同的變數,它無法將這些變數統一成一個變數,也就是僅為此變數分配一個空 間,而不是多份空間,假定這個變數在h檔案沒有賦初值,編譯器就會將之放入bss段,聯結器會對bss段的多個同名變數僅分配一個儲存空間。

7樓:風若遠去何人留

c語言的原始檔分為兩種:

1、.c檔案,以c為副檔名,一般儲存具體功能的實現;

2、.h檔案,稱為標頭檔案,一般儲存型別的定義,函式的宣告等。

通常,標頭檔案被.c檔案包含,使用#include 語句。

但值得注意的是,這只是一種約定,而非強制。

事實上,將宣告寫在.c檔案,比如a.c,然後#include "a.c"

同樣是合法的。

而把.h檔案,內部寫入函式實現,再在.c檔案中引用,也是編譯器允許的。

所以,.c與.h的區分,本質上是一種約定。一名合格的軟體開發人員,也要遵循這個約定,增加**的可讀性和維護性。

8樓:匿名使用者

標頭檔案用於定義型別

c檔案主要用於寫實現.

9樓:匿名使用者

在」998999999899998」ii

c語言中 .c和.h有什麼區別

10樓:

c語言的原始檔分為兩種:

1、.c檔案,以c為副檔名,一般儲存具體功能的實現;

2、.h檔案,稱為標頭檔案,一般儲存型別的定義,函式的宣告等。

通常,標頭檔案被.c檔案包含,使用#include 語句。

但值得注意的是,這只是一種約定,而非強制。

事實上,將宣告寫在.c檔案,比如a.c,然後#include "a.c"

同樣是合法的。

而把.h檔案,內部寫入函式實現,再在.c檔案中引用,也是編譯器允許的。

所以,.c與.h的區分,本質上是一種約定。一名合格的軟體開發人員,也要遵循這個約定,增加**的可讀性和維護性。

11樓:核桃愛花生

一個源程式檔案,一個是標頭檔案,標頭檔案一般是用來宣告同名程式中實現的函式,還有就是定義一些常量.

c語言中的標頭檔案例如cstdio和stdio.h,cstdio中的c與stdio.h的.h有什麼區別?謝謝

12樓:匿名使用者

stdio.h是先到你程式所在資料夾找標頭檔案,若沒找到再去vc或tc安裝目錄下找標頭檔案

只到vc或tc安裝目錄下去找標頭檔案

stdio.h他是c語言中一個庫函式,在他的左右兩邊加「」和<>都是一樣的,在vc++環境中,電腦都能識別,這兩種寫法不同,但要表達的意思是一樣的。舉個簡單的

#include#include"stdio.h"void main()void main()}   這兩個c語言程式輸出的都是c yu yan這幾個字母,這兩個「」和<>你喜歡哪一個你就寫哪一個,所表達的意思都是一樣的。

13樓:金色潛鳥

stdio.h 是 c 語言標準庫 中的標頭檔案。

cstdio 是 c++ std namespace 裡的庫函式 標頭檔案。

功能上 都是 標準輸入輸出函式 (標頭檔案/函式原型宣告),但它們是不同的 檔案,內容 也不完全相同。

用 cstdio 時,若程式裡 未加 using namespace std 時,呼叫這個名字空間的函式 需加 std::

c++ 程式應當用 cstdio, c 程式應當用 .h;

詳見

c語言中標頭檔案中<*.h>和「*.h」的區別?

14樓:匿名使用者

<*.h>表示優先中系統目錄中查詢 該標頭檔案 比如#include 這是系統中的

"*.h"表示優先從當前目錄中查詢 該標頭檔案 比如#include "head.h" 這是你自己寫的

15樓:縱橫朝野

前者編譯時系統直接在標頭檔案庫中尋找包含內容。

後者編譯時系統會先在儲存程式的資料夾中找程式包含檔案,之後去標頭檔案庫中尋找;

16樓:

<*.h>直接在編譯器標準庫路徑查詢,不到別的地方找。

"*.h"先在當前檔案路徑找,如果找不到,再去標準庫路徑找,如果還找不到,那就完了。

#include "一個絕對路徑",那隻在你指定的路徑查詢。

17樓:匿名使用者

標頭檔案<*.h>只檢索vc++自帶的標頭檔案

標頭檔案"*.h"可以檢索使用者自己編寫的標頭檔案

18樓:匿名使用者

對於#include <*.h> ,編譯器從標準庫路徑開始搜尋*.h ,對於#include 「*.h」 ,編譯器從使用者的工作路徑開始搜尋 *.h。

19樓:秦奇敏康寧

c的標頭檔案都有副檔名.h,c++中,將這些c的標頭檔案名的新增字元c,並去除副檔名.h。如

math.h

→cmath

stdlib.h

→cstdlib等等

在c語言中,#include和 #include有什麼區別?

20樓:影者東昇

#include //定義輸入/輸出函式

#include //字串處理

c/c++標頭檔案一覽

c、傳統 c++

#include //設定插入點

#include //字元處理

#include //定義錯誤碼

#include //浮點數處理

#include //檔案輸入/輸出

#include //引數化輸入/輸出

#include //資料流輸入/輸出

#include //定義各種資料型別最值常量#include //定義本地化函式

#include //定義數學函式

#include //定義輸入/輸出函式

#include //定義雜項函式及記憶體分配函式#include //字串處理

#include //基於陣列的輸入/輸出#include //定義關於時間的函式

#include //寬字元處理及輸入/輸出#include //寬字元分類

標準 c++ (同上的不再註釋)

#include //stl 通用演算法

#include //stl 位集容器

#include

#include

#include

#include

#include //複數類

#include

#include

#include

#include

#include //stl 雙端佇列容器#include //異常處理類

#include

#include //stl 定義運算函式(代替運算子)#include

#include //stl 線性列表容器#include //stl 對映容器

#include

#include //基本輸入/輸出支援

#include //輸入/輸出系統使用的前置宣告#include

#include //基本輸入流

#include //基本輸出流

#include //stl 佇列容器

#include //stl 集合容器

#include //基於字串的流

#include //stl 堆疊容器

#include //標準異常類

#include //底層輸入/輸出支援

#include //字串類

#include //stl 通用模板類

#include //stl 動態陣列容器#include

#include

using namespace std;

c99 增加

#include //複數處理

#include //浮點環境

#include //整數格式轉換

#include //布林環境

#include //整型環境

#include //通用型別數學巨集

c語言中與有什麼區別C語言中和的區別

語言中 與 有三個區別 作用不同 輸出的值不同 使用方法不同。如下參考 一 作用不同 表示按位與運算,另外也是取地址符 例如 0010 1101,結果為0000 表示邏輯與運算 例如 if a 0 b 0 意思就是ifa為0並且b為0的時候,進行下一步操作。二 輸出的值不同 b輸出的值為2,說明b沒...

c語言中pa與pa有什麼區別c語言中intpa與intpa有什麼區別???求大俠幫忙!!!

讓我來綜合一下吧 在定義的時候 int p a 是等同於 int p p a 的。該形式只在定義的時候是正確的。就是指標p所指向地址的內容為a的內容。如果不是定義的時候 p a 就是它字元的那個意思,就是指標p所指向地址的內容為a的地址。dev c 試了下 p 表示地址為p儲存單元的內容 p 表示地...

c語言中和有什麼區別,c語言中的break與Continue有什麼區別

是賦值操作 是比較是否相等操作 if i 1 是永遠成立的 if i 1 只有當1值是1才成立 i i是把數字1的值賦給i i 1是i的值等於1 前者為賦值,後者為判斷 是複製語句,是判斷前後是否相等 是賦值操作,是比較是否相等操作。你是初學吧!是賦值,例如inta 3 intb a 那麼b 3.關...