C語言開發筆記(八)static

2021-09-20 12:50:43 字數 1130 閱讀 1181

在c語言中,static有3個作用:

(1)在函式體,乙個被宣告為靜態的變數在這一函式體內被呼叫的過程中維持其值不變。

#include void test(void)

int main(void)

如果不使用static修飾 int i,結果為(2)在模組內,乙個被宣告為靜態的變數可以被模組內所有的函式訪問,但不能被模組外其他函式訪問。它是乙個本地的全域性變數。

在test.c裡面宣告乙個全域性變數

int a = 100;
在main.c中也宣告乙個全域性變數

int a = 200;
編譯器報錯因為a是非靜態全域性變數,作用域是整個源程式,而靜態全域性變數的作用域限制在定義該變數的原始檔內有效。

test.c裡面的變數修改為

static int a = 100;
編譯通過。

(3)在模組內,乙個被宣告為靜態的函式只可被這一模組內的其他函式呼叫,這個函式被限制在宣告它的模組的本地範圍內使用。

比如static_test.h 的內容為

#ifndef static_test_h

#define static_test_h

static void static_func(void);

void func(void);

#endif

static_test.c的內容為

#include "static_test.h"

#include static void static_func(void)

void func(void)

在main.c中去呼叫static_func(),編譯器會報錯。而static_test.c裡呼叫static_func()是可以的。從而說明static修飾的函式只能在模組static_test.c裡面呼叫,不允許模組外呼叫。

標頭檔案中static_func()不使用static修飾也可以編譯通過,但是依照**規範的要求,必須使用static修飾以增加閱讀性,標頭檔案使用static修飾表明了該函式不允許使用者呼叫。

iPhone客戶端開發筆記(八)

客戶端穩定性和提公升使用者體驗。2,嘗試在後台接收報警資訊的嘗試 後台執行。這是官方文件中關於後台和多工的詳細描述 3,嘗試使用push notification接收報警資訊 這是對remote push notification機制的概述 要實現push notification,需要以下三部分知...

Android 開發筆記

版本控制的注意事項 以下資料夾不要加入版本控制 bin bin是編譯的二進位制檔案的存放路徑 gen gen是android需要的資源檔案的原始檔存放的目錄 使用svn的時候要注意專案編譯的問題 在編譯的時候程式會把src資料夾裡面的檔案拷貝到bin裡面,但是svn是每個資料夾裡面都包含乙個隱藏的....

ORACLE 開發筆記

oracle 日期 submitdate datetime.parse submitdate tostring d m月 yyyy to date 2002 01 02 yyyy m dd select count 1 from l perm where cancel y and sysdate p...