1. 程式人生 > >C語言中使用靜態函式的好處

C語言中使用靜態函式的好處

          靜態函式會被自動分配在一個一直使用的儲存區,直到退出應用程式例項,避免了呼叫函式時壓棧出棧,速度快很多。
關鍵字“static”,譯成中文就是“靜態的”,所以內部函式又稱靜態函式但此處“static”的含義不是指儲存方式,而是指對函式的作用域僅侷限於本檔案。 使用內部函式的好處是:不同的人編寫不同的函式時,不用擔心自己定義的函式,是否會與其它檔案中的函式同名,因為同名也沒有關係。

c語言中static的語義

1.static變數:

1).區域性

a.靜態區域性變數在函式內定義,生存期為整個源程式,但作用域與自動變數相同,只能在定義該變數的函式內使用。退出該函式後, 儘管該變數還繼續存在,但不能使用它。

b.對基本型別的靜態區域性變數若在說明時未賦以初值,則系統自動賦予0值。而對自動變數不賦初值,則其值是不定的。

2).全域性

  全域性變數本身就是靜態儲存方式, 靜態全域性變數當然也是靜態儲存方式。但是他們的作用域,非靜態全域性 變數的作用域是整個源程式(多個原始檔可以共同使用); 而靜態全域性變數則限制了其作用域, 即只在定義該變數的原始檔內有效, 在同一源程式的其它原始檔中不能使用它。

2.static函式(也叫內部函式)只能被本檔案中的函式呼叫,而不能被同一程式其它檔案中的函式呼叫。

區別於一般的非靜態函式(外部函式) static在c裡面可以用來修飾變數,也可以用來修飾函式。 先看用來修飾變數的時候。變數在c裡面可分為存在全域性資料區、棧和堆裡。其實我們平時所說的堆疊是棧而不包含對,不要弄混。


相關推薦

c語言輸出函式putc_putchar_puts-printf

//輸入輸出:英文是Input/Output 簡稱IO。 //putchar:將指定的數值對應的ASCII字元列印到螢幕上。 //putc:不但指定數值,而且還可以指定列印到哪裡去。 //stdout:是指定列印到螢幕上 standard out . //putc可以指定列印到一個檔案(FILE *

c語言常用函式

memset void *memset(void *s, int ch, size_t n); 函式解釋:將s中當前位置後面的n個位元組 (typedef unsigned int size_t )

C語言函式自帶的排序函式qsort

之前一直不知道C語言還有預設的排序函式,而且還是快速排序的函式,當時覺得自己C語言白學了,瞭解之後我覺得應該把這個函式的用法和用例展示出來,供大家參考。 #include <stdlib.h> void qsort( void *buf, size_t num,

C語言排序函式的用法

C語言中沒有預置的sort函式。如果在C語言中,遇到有呼叫sort函式,就是自定義的一個函式,功能一般用於排序。 一、可以編寫自己的sort函式。 如下函式為將整型陣列從小到大排序。 void sort(int *a, int l)//a為陣列地址,l為陣列長度

C語言函式指標

Q:函式指標是什麼意思? A:例如一個指標指向int變數,那麼這個指標就是儲存這個int變數在記憶體中儲存的地址。同理,函式指標就是指向一個函式的指標,那麼這個指標就是儲存這個函式在記憶體中儲存的起始

C語言函式

在對C語言有過一定的瞭解之後,我們都會涉及到一個概念:函式。 那麼,什麼是函式呢? 首先,我們來看一段 程式碼: #include<stdio.h> int Max(int x,int y) { retutn (x>y)

C語言指向函式的指標

1 定義和呼叫程式在編譯後,每個函式都有一個首地址(也就是函式第一條指令的地址),這個地址稱為函式的指標。可以定義指向函式的指標變數,使用指標變數間接呼叫函式。下面通過一個簡單的例子來說明:float max(float x,float y){return x>y?x:y;}float min(f

C語言函式呼叫,棧的使用

本文共包含一下四個部分。 C原始碼 註釋 對應彙編程式碼:此彙編使用”gcc -S hello.c”命令編譯生成,部分刪減 棧空間的使用過程:包括5個部分,五張圖 C原始碼 int sayhello(int a,int b,int

c++和c語言函式相互呼叫的問題

1、如何C++程式要呼叫 已編譯後的C函式,該怎麼辦? (1)假設某個C函式的宣告如下: void foo(int x, int y); 該函式被C編譯器編譯後在庫中的名字為_foo,而C++編譯器則會產生像 _foo_int_int之類的名字用來支援過載和型別安全連線。由

利用C語言函式實現檔案的Copy

2.讀寫   (1).按字元進行讀寫操作   fgetc        int fgetc(FILE *stream);        引數:           @stream 流指標      

c語言靜態庫動態庫的建立與使用

在c程式中存在兩種庫檔案,分別為靜態庫檔案與動態庫檔案也叫共享庫檔案,系統的庫檔案存放路徑為 usr/lib目錄下: 靜態庫檔案就是一些.o目標檔案的集合,以.a結尾。 靜態庫在程式連結的時候使用,聯結器會將程式中使用到的函式的程式碼從庫檔案拷貝到可執行檔案中,一旦連結完成

C語言函式列印乘法口訣表,行數和列數可以任意輸入

#define _CRT_SECURE_NO_WARNINGS #include<stdio.h> void print_table(int line) { int i = 0;

c語言靜態全域性變數、靜態區域性變數、全域性變數、區域性變數、巨集

全域性變數: 全域性變數具有全域性作用域。,它只編譯期被始化一次,它不能用變數來初始化。全域性變數只需要在一個原始檔中定義,就可以作用於所有的原始檔。在其他不包含全域性變數定義的原始檔中需要用extern關鍵詞來再次宣告這個全域性變數 區域性變數: 區域性變數只有區域性

C語言呼叫靜態函式和動態庫函式的方式

C語言中呼叫動態庫函式的兩種方式 方式一.隱式呼叫 將動態庫的相關檔案拷貝到當前目錄下(lib、dll),然後新增以下程式碼,在程式中指定連線庫函式。 注意:第二個引數給出的是引入庫檔案(或稱“匯出庫檔案”),而不是dll。在程式執行過程中,lib將dll中需要用到的函式對映到對應的記憶

C語言使用靜態函式的好處

          靜態函式會被自動分配在一個一直使用的儲存區,直到退出應用程式例項,避免了呼叫函式時壓棧出棧,速度快很多。 關鍵字“static”,譯成中文就是“靜態的”,所以內部函式又稱靜態函式。但此處“static”的含義不是指儲存方式,而是指對函式的作用域僅侷限於本

C語言中static的作用及C語言使用靜態函式有何好處

在C語言中,static的字面意思很容易把我們匯入歧途,其實它的作用有三條,分別是: 一是隱藏功能,對於static修飾的函式和全域性變數而言 二是保持永續性功能,對於static修飾的區域性變數而言。 三是因為存放在靜態區,全域性和區域性的static修飾的變數,都預設初始化為0 下面我逐一給

C語言靜態函式的作用

轉載 在C語言中為什麼要用靜態函式(static function)? 如果不用這個static關鍵字,好象沒有關係。那麼,用了static以後,有什麼作用呢? 我們知道,用了static的變數,叫做靜態變數,其意義是,該變數的值在下次呼叫時,還繼續保留前次呼叫時的值。

C語言存儲類別又分為四類:自動(auto)、靜態(static)、寄存器的(register)和外部的(extern)。

字符變量 修飾 例如 register ext 進行 適合 sta -- 除法運算中註意: 如果相除的兩個數都是整數的話,則結果也為整數,小數部分省略,如8/3 = 2;而兩數中有一個為小數,結果則為小數,如:9.0/2 = 4.500000。 取余運算中註意: 該運算只適

C語言函式宣告、形參、實參

函式原型: 原型prototype是函式的宣告;描述了函式的返回值與引數;  函式原型說明了兩點: 1、該函式的返回值 2、該函式的引數及其型別 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 函式的引數: 引數到底是什

C語言變數名及函式名的命名規則與駝峰命名法

一、C語言變數名的命名規則:(可以字母,數字,下劃線混合使用) 1. 只能以字母或下劃線開始;2. 不能以數字開始;3. 一般小寫;4. 關鍵字不允許用(eg:int float=2//error  float 為保留字不允許用); 二、函式名的命名規則 1.見名知意;2.自定義函式函式名首字