enum在c語(yǔ)言中的用法 c語(yǔ)言中的枚舉類型在數(shù)據(jù)結(jié)構(gòu)中有?
數(shù)據(jù)結(jié)構(gòu)中經(jīng)常使用枚舉類型來(lái)表示數(shù)據(jù)中的常量值。關(guān)鍵詞:C語(yǔ)言有32個(gè)關(guān)鍵詞,比如int char float C語(yǔ)言有上百個(gè)標(biāo)準(zhǔn)庫(kù)函數(shù),分布在不同的庫(kù)文件中。目前,大多數(shù)系統(tǒng)和程序肯定與C99標(biāo)準(zhǔn)兼
數(shù)據(jù)結(jié)構(gòu)中經(jīng)常使用枚舉類型來(lái)表示數(shù)據(jù)中的常量值。
關(guān)鍵詞:C語(yǔ)言有32個(gè)關(guān)鍵詞,比如int char float
C語(yǔ)言有上百個(gè)標(biāo)準(zhǔn)庫(kù)函數(shù),分布在不同的庫(kù)文件中。目前,大多數(shù)系統(tǒng)和程序肯定與C99標(biāo)準(zhǔn)兼容,但2011年已經(jīng)發(fā)布了更新版本,一些遺留系統(tǒng)可能不一定支持最新的功能。不同的功能有不同的應(yīng)用。是否說(shuō)哪些比較常用,要看你的工作性質(zhì)。
一般來(lái)說(shuō),至少在基本編程中,stdio中的I/O(要么是控制臺(tái),要么是文件),stdlib中的各種通用工具(比如分配堆內(nèi)存),string中的字符串處理,
是的。
以C語(yǔ)言為例,在內(nèi)存中創(chuàng)建一個(gè)字符串,至少需要一個(gè)char數(shù)組來(lái)存儲(chǔ),因?yàn)橐鎯?chǔ)結(jié)束標(biāo)識(shí)符;枚舉實(shí)際上是一個(gè)結(jié)構(gòu),里面的枚舉項(xiàng)可以定義為整數(shù),比字符串的存儲(chǔ)更方便,成本更低。
而且字符串作為枚舉時(shí)容易拼錯(cuò),枚舉都定義為數(shù)值常量,編譯器編譯時(shí)容易發(fā)現(xiàn)錯(cuò)誤,提示開(kāi)發(fā)者及時(shí)改正,方便維護(hù)。
Java編程中有。
如果可以選擇,使用enum是比String更好的方法。它的性能比String好,而且也是類型安全的。如果參數(shù)集是有限的并且在編譯時(shí)已知,則使用enum。但是如果參數(shù)集是未知的或者在編譯時(shí)是開(kāi)放的,那么除了使用字符串之外別無(wú)選擇。
結(jié)論是會(huì)有性能損失。
主要比較兩個(gè)對(duì)象。
枚舉可以理解為singleton。直接比較對(duì)象時(shí),可以簡(jiǎn)單理解為整數(shù)對(duì)象比較。時(shí)間復(fù)雜度為1。
字符串,實(shí)際上用的是equals方法,你看了代碼應(yīng)該知道它是逐字符比較的。時(shí)間復(fù)雜度為n,字符串越長(zhǎng)越耗時(shí)。
作為map的鍵,或者使用switch語(yǔ)句,這樣的性能差別不小。
損失不大的性能損失最大的在于磁盤IO和網(wǎng)絡(luò)IO。
那里 這真的沒(méi)必要擔(dān)心。自己測(cè)試一下就好了。