c語言中使用靜態函式的好處:
靜態函式會被自動分配在乙個一直使用的儲存區,直到退出應用程式例項,避免了呼叫函式時壓棧出棧,速度快很多。
關鍵字「static
」,譯成中文就是「靜態的」,所以內部函式又稱靜態函式。但此處「
static
」的含義不是指儲存方式,而是指對函式的
作用域僅侷限於本檔案。
使用內部函式的好處是:不同的人編寫不同的函式時,不用擔心自己定義的函式,是否會與其它檔案中的函式同名,因為同名也沒有關係。
c語言中
static
的語義
1.static變數:
1).區域性
a.靜態區域性變數在函式內定義
,生存期為整個源程式,但作用域與自動變數相同,只能在定義該變數的函式內使用。退出該函式後, 儘管該變數還繼續存在,但不能使用它。
b.對基本型別的靜態區域性變數若在說明時未賦以初值,則系統自動賦予
0值。而對自動變數不賦初值,則其值是不定的。
2).全域性全域性變數本身就是靜態儲存方式, 靜態全域性變數當然也是靜態儲存方式。但是他們的作用域,非靜態全域性 變數的作用域是整個源程式(多個原始檔可以共同使用);而靜態全域性變數則限制了其作用域, 即只在定義該變數的原始檔內有效, 在同一源程式的其它原始檔中不能使用它。
2.static函式(也叫內部函式)只能被本檔案中的函式呼叫,而不能被同一程式其它檔案中的函式呼叫。
區別於一般的非靜態函式(外部函)static在c
裡面可以用來修飾變數,也可以用來修飾函式。先看用來修飾變數的時候。變數在
c裡面可分為存在全域性資料區、棧和堆裡。其實我們平時所說的堆疊是棧而不包含對,不要弄混。
#define gyro_gr 0.0002663 //角速度變成弧度速度
(32768=500
度/s=(500*0.01745329252)
弧度/s=8.7266
弧度/s 8.7266/32768=0.0002663
弧度/s )
3.14/180=0.01745329252
如果是硬體iic
就復用,如果是模擬就通用!
卡爾曼濾波是一種遞迴的估計,即只要獲知上一時刻狀態的估計值以及當前狀態的觀測值就可以計算出當前狀態的估計值,因此不需要記錄觀測或者估計的歷史資訊。
卡爾曼濾波器與大多數濾波器不同之處,在於它是一種純粹的時域濾波器,它不需要像低通濾波器等頻域濾波器那樣,需要在頻域設計再轉換到時域實現。
經度差=
當前經度
-目標經度
緯度差=
當前緯度
-目標緯度
機體橫滾方向差=
經度差*cos
(地磁角)
-緯度差
*sin(
地磁角)
機體俯仰方向差=
緯度差*cos
(地磁角)
+經度差
*sin(
地磁角)
目標橫滾角=p
機體橫滾方向差
+d機體橫滾方向差(微分
)+i機體橫滾方向差(積分)
目標俯仰角=p
機體俯仰方向差
+d機體俯仰方向差(微分
)+i機體俯仰方向差(積分)
機體橫滾方向差=
經度差*cos
(地磁角)
-緯度差
*sin(
地磁角)
機體俯仰方向差=
緯度差*cos
(地磁角)
+經度差
*sin(
地磁角)
可能有錯誤的就是這兩句裡面的正負號,可能是反的
靜態函式與非靜態函式的區別
靜態成員函式和非靜態成員函式的根本區別在於有無this指標。非靜態函式由物件名或者物件指標 呼叫,呼叫時編譯器會向函式傳遞this指標 靜態成員函式則由類名 或者物件名呼叫 非靜態函式中有this指標,靜態函式中沒有this指標,不能訪問物件的成員函式,成員函式有this指標,const修飾this...
C語言中使用靜態函式的好處
靜態函式會被自動分配在乙個一直使用的儲存區,直到退出應用程式例項,避免了呼叫函式時壓棧出棧,速度快很多。關鍵字 static 譯成中文就是 靜態的 所以內部函式又稱靜態函式。但此處 static 的含義不是指儲存方式,而是指對函式的作用域僅侷限於本檔案。使用內部函式的好處是 不同的人編寫不同的函式時...
c靜態函式
c程式一直由下列部分組成 1 正文段 cpu執行的機器指令部分 乙個程式只有乙個副本 唯讀,防止程式由於意外事故而修改自身指令 2 初始化資料段 資料段 在程式中所有賦了初值的全域性變數,存放在這裡。3 非初始化資料段 bss段 在程式中沒有初始化的全域性變數 核心將此段初始化為0。5 堆 動態儲存...