1. 程式人生 > 其它 >C語言面試基礎

C語言面試基礎

#include兩種宣告區別

引用的標頭檔案不同
#include < > 引用的是編譯器的類庫路徑裡面的標頭檔案。
#include“ ”引用的是你程式目錄的相對路徑中的標頭檔案。
用法不同
#include < > 用來包含標準標頭檔案(例如stdio.h或stdlib.h).
#include“ ”用來包含非標準標頭檔案。
呼叫檔案的順序不同
#include < > 編譯程式會先到標準函式庫中呼叫檔案。
#include“ ”編譯程式會先從當前目錄中呼叫檔案。
預處理程式的指示不同
#include < > 指示預處理程式到預定義的預設路徑下尋找檔案。
#include“ ”指示預處理程式先到當前目錄下尋找檔案,再到預定義的預設路徑下尋找檔案。

通用gcc編譯過程

預處理 gcc/g++ -E hello.c/.cpp -o hello.i
編譯 gcc/g++ -S hello.i -o hello.s
彙編 gcc/g++ -c hello.s -o hello.o
連結 gcc/g++ hello.o -o hello

leetcode刷題sort函式第三個引數cmp必須宣告為static的原因

可以知道其實我們寫引數cmp時,是把函式名作為實參傳遞給了sort函式,而sort函式內部是用一個函式指標去呼叫這個cmp函式的

我們知道class普通類成員函式cmp需要通過物件名.cmp()來呼叫,而sort()函式早就定義好了,那個時候哪知道你定義的是什麼物件,所以內部是直接cmp()的,那你不加static時,去讓sort()直接用cmp()當然會報錯

static靜態成員函式不用加物件名,就能直接訪問函式(這也是靜態成員函式的一大優點)所以加了static就不會報錯