C語言知識點(三) 基礎知識

2021-08-27 14:05:06 字數 1630 閱讀 7890

防止該標頭檔案被重複引用

對於#include,編譯器從標準庫路徑開始搜尋"filename.h"

對於#include"filename.h",編譯器從使用者的工作路徑開始搜尋"filename.h"

(1)引用本身是變數的別名,對引用的操作就是對變數本身的操作

(2)引用必須要被初始化,指標可以不被初始化

(3)引用被初始化後不可以改變,指標可以改變所指的物件

(4)不存在指向空值的引用,存在指向空值的指標。就是說引用不可以引用空值,而指標可以指向空值。

c語言函式引數入棧順序是從右往左的,這是由編譯器決定的,更具體的說是函式呼叫約定決定了引數的入棧順序。

int a = 10, b = 20, c = 30;

printf("%d,%d,%d\n", a = a + b, b = b + c, c = c * 2); //a=90,b=80,c=60

關鍵字const用來定義常量,與預編譯define相比,有以下的優點

(1)預編譯指令只是對值的簡單的替換,不能進行型別檢查

(2)可以保護被修飾的東西,防止被意外修改,增加程式的健壯性

(3)編譯器通常不為普通const常量分配儲存空間,而是將它們儲存在符號表中,使得它成為乙個編譯期間的常量,沒有了儲存與讀記憶體的操作,使得它的效率也很高

const常在以下幾個方面使用

(1)修飾區域性變數

const int n=5;

int const n=5;//兩種寫法一樣,用const修飾變數一定要初始化

2)常量指標與指標常量

(3)修飾函式的返回值

(4)修飾函式的引數

(5)修飾全域性變數

定義:在c語言中,如果一些函式被頻繁呼叫,不斷地有函式入棧,即函式棧,會造成棧空間和棧記憶體的大量消耗

為了解決這個問題,特別的引入了inline修飾符,表示為內聯函式

目的:減少函式呼叫的開銷

用法:在函式返回值前加修飾符inline:如

inline int fun(int n);

編譯器會在原始檔的合適位置生成函式**的副本,以避免函式呼叫。從函式角度來看,相比inline,巨集雖然同樣能減少函式呼叫的開銷,但巨集有著無法迴避的天生缺陷

優勢:inline函式會像巨集一樣展開,執行速度非常快

侷限

(1)建議:定義inline內聯函式,實際上是對編譯器的「建議」,編譯器可能會拒絕

(2)小函式:inline函式如果**量過大,編譯器幾乎不可能採納內聯函式的「建議」

(3)限制:inline內不可以含有複雜的結構控制語句例如while,switch等,並且內聯函式本身不能是遞迴函式

C 基礎知識點(三)

委託 事件單獨列乙個部分來寫,專案裡面用到太多了。類似c 中的函式指標,乙個例子 int max int x,int y delegate int mydelegate int a,int b mydelegate md max 例項化 int c md 1,2 為了進一步簡化 直接不定義max函式...

go 語言 基礎知識點三

sql.open 函式用來開啟乙個註冊過的資料庫驅動,go mysql driver中註冊了mysql這 個資料庫驅動,第二個引數是dns data source name 它是go mysql driver定義的 一些資料庫鏈結和配置資訊。它支援如下格式 res,err stmt.exec zha...

C 基礎知識點

1.單行注釋 多用於給變數注釋 2.多行注釋 多用於大段文字注釋 3.文件注釋 多用於給類和方法注釋 只能以字母 或者 符號開頭。開頭暫時不要用,它們有自己特殊的意義 後面可以跟任意的字母數字下劃線 命名法 1 camelclass駝峰命名法 變數名首單詞的首字母小寫,其餘的每個單詞的首字母大寫eg...