淺談typedef與define
今天看了一下書,感覺typedef確實不錯,相比define,不過實際上是各有千秋的。
現在就來看看兩者各自的優缺點吧。
一:typedef與define
(1)define是預處理指令,在編譯預處理時進行簡單的替換,不做正確性的建和擦,不管含義是否正確照樣進行替換,只有在編譯已被展開的源程式時才會發現可能的錯誤並出錯。
(2)typedef作用時宣告一個新的型別名代替已有的型別名,是在編譯時處理的。它在自己的作用域內給一個已經存在的型別一個別名,他是語言編譯過程的一部分,並不實際分配記憶體空間
二:static:
在c語言中,它有三個主要的作用:
在一個函式體中,一個被宣告為靜態的變數在這一函式被呼叫過程中維持其值不變。
在模組內(在函式體外),一個被宣告為靜態的變數可以被模組內所用函式訪問,但不能被模組外其他函式訪問。它是一個本地的全域性變數
在模組內,一個被宣告的靜態的函式只能被這一模組內的其他函式呼叫,那就是,這個函式被限制在宣告它的模組的本地範圍中使用
總結一下,就是它起到限制變數的作用域和設定變數的儲存域的作用。
三:const
const意味著只讀:
const int s; int const a;這兩個作用是一樣的。
const int *a;a 是一個指標,這個指標指向常整數型,指標可變,但是整形數不可變。
int * const a;a是一個指向整數型的常指標,也就是指標不可變,而整數是可以變的。
合理使用const可以很自然地保護那些不希望被改變的引數,減少debug
而且將變數宣告為常量就是為了告訴使用者這個引數的應用目的
能夠產生更加緊湊的程式碼
相關文章
- typedef與define的區別
- define和typedef的區別
- #define巨集與列舉以及typedef關鍵字的區別
- 淺談ActiveMQ與使用MQ
- VirtualDOM與DomDiff淺談
- 淺談px,em與remREM
- 淺談JVM與垃圾回收JVM
- 談談深拷貝與淺拷貝
- 淺談前端MVC與MVVC模式前端MVC模式
- 淺談貪心與動歸
- 淺談DDos攻擊與防禦
- 淺談VueUse設計與實現Vue
- 淺談src與href的區別
- 淺淺談ReduxRedux
- typedef用法
- Python3之淺談----深拷貝與淺拷貝Python
- 淺談js的this指向與解決思路JS
- 淺談hdfs架構與資料流架構
- 淺談中介軟體漏洞與防護
- 淺談網路-閘道器與路由路由
- 淺談JavaScript的防抖與節流JavaScript
- 淺談超快讀與超快寫
- 淺談 Dart 類與類的基本方法Dart
- 淺淺淺談JavaScript作用域JavaScript
- 從玩法、敘事、主題三個角度淺要談談《死亡擱淺》的好與壞
- 淺談 PromisePromise
- 淺談mockMock
- 淺談ViewModelView
- 淺談PWA
- 淺談Disruptor
- 淺談反射反射
- 淺談vuexVue
- ElasticSearch淺談Elasticsearch
- 淺談NginxNginx
- 淺談promisePromise
- 淺談visibility
- 淺談flutterFlutter
- 淺談JMM
- Celery淺談