const,static,extern簡介(重要)

2021-09-23 21:21:11 字數 2067 閱讀 2380

注意:很多blog都說使用巨集,會消耗很多記憶體,我這驗證並不會生成很多記憶體,巨集定義的是常量,常量都放在常量區,只會生成乙份記憶體。

// 常見的常量:抽成巨集

#define xmgaccount @"account"

#define xmguserdefault [nsuserdefaults standarduserdefaults]

// 字串常量

static nsstring * const account = @"account";

- (void)viewdidload

- (void)viewdidload
@implementation viewcontroller

// 定義唯讀全域性常量

nsstring * const str = @"123";

// 當乙個方法的引數,唯讀.

- (void)test:(nsstring * const)name

// 指標唯讀,不能通過指標修改值

- (void)test1:(int const *)a

// 基本資料型別唯讀

- (void)test2:(int const)a

@end

1.只能在本檔案中訪問,修改全域性變數的作用域,生命週期不會改

extern作用:

只是用來獲取全域性變數(包括全域性靜態變數)的值,不能用於定義變數

extern工作原理:

先在當前檔案查詢有沒有全域性變數,沒有找到,才會去其他檔案查詢。

// 全域性變數:只有乙份記憶體,所有檔案共享,與extern聯合使用。

int a = 20;

// static修飾全域性變數

static int age = 20;

- (void)test

- (void)viewdidload

i

// 開發中常用static修飾全域性變數,只改變作用域

// 為什麼要改變全域性變數作用域,防止重複宣告全域性變數。

// 開發中宣告的全域性變數,有些不希望外界改動,只允許讀取。

// 比如乙個基本資料型別不希望別人改動

// 宣告乙個靜態的全域性唯讀常量

static const int a = 20;

// staic和const聯合的作用:宣告乙個靜態的全域性唯讀常量

// ios中staic和const常用使用場景,是用來代替巨集,把乙個經常使用的字串常量,定義成靜態全域性唯讀變數.

// 開發中經常拿到key修改值,因此用const修飾key,表示key唯讀,不允許修改。

static nsstring * const key = @"name";

// 如果 const修飾 *key1,表示*key1唯讀,key1還是能改變。

static nsstring const *key1 = @"name";

全域性常量正規寫法:開發中便於管理所有的全域性變數,通常搞乙個globeconst檔案,裡面專門定義全域性變數,統一管理,要不然專案檔案多不好找。

globeconst.h

/*******************************首頁****************************/

extern nsstring * const namekey = @"name";

/*******************************首頁****************************/

#import /*******************************首頁****************************/

nsstring * const namekey = @"name";

/*******************************首頁****************************/

const,static,extern用法總結

const應用 一 對於基本宣告 const int r 100 標準const變數宣告加初始化,編譯器經過型別檢查後直接用100在編譯時替換。二 對於指標 1.int x 10 const int r x 指標指向的內容是常量,r指向的內容不能夠通過r改變,但如果是非const,內容可以通過自己改...

Linq 去重簡介

說到去重首先想到的便是distinct,但是也不是所有地方都適用。下面就講乙個不適用的場景,並給出解決方案。var list await query.getall asnotracking select x x.provincecode distinct tolistasync 這段 獲取 prov...

海量資料去重之SimHash演算法簡介和應用

simhash是什麼 simhash是google在2007年發表的 detecting near duplicates for web crawling 中提到的一種指紋生成演算法或者叫指紋提取演算法,被google廣泛應用在億級的網頁去重的job中,作為locality sensitive ha...