[問題] 用陣列方式表達指標的習慣?

作者: sppmg (sppmg)   2017-10-17 09:35:15
開發平台(Platform): (Ex: Win10, Linux, ...)
all
問題(Question):
對於一個指標 p ,具有:
p[i] == *(p+i)
剛剛看了「混沌四神:陣列、指標、宣告、定義」 #1ERylPtG (C_and_CPP)
知道陣列 != 指標,語法上的相似是編譯器處理掉的。
(不過以前初學的時候看過書上提過用[]和*處理陣列資料的爭執,
說有人測過指標會略快一點?)
那我想請問通常對於一個 malloc 空間的操作會習慣使用[]還是 *() 呢?
會這樣問是因為感覺上 p[i] 好像比 *(p+i) 來的簡潔。
不過不知道會不會容易造成誤會,像是 p[-1] 這種用法。
作者: steve1012 (steve)   2017-10-17 10:25:00
感覺不是效能瓶頸 lol
作者: Feis (永遠睡不著 @@)   2017-10-17 10:28:00
關鍵應該是 i 的值是否具備某些特性可以利用,根本問題是 p值可變有沒好處
作者: diabloevagto (wi)   2017-10-17 10:42:00
程式寫給人看的,只要你在使用時可以讓其他人看懂你用的是指標還是陣列就好,我會習慣用 ()
作者: loveflames (咕啾咕啾魔法陣)   2017-10-17 11:13:00
不要故意寫成i[p]就好
作者: diabloevagto (wi)   2017-10-17 13:15:00
我會用 *()
作者: Killercat (殺人貓™)   2017-10-17 14:01:00
除了map用不用operator[]有點差異以外 其他都是爽就好
作者: steve1012 (steve)   2017-10-17 14:27:00
沒差吧 別鑽牛角尖了
作者: kingofsdtw (不能閒下來!!)   2017-10-17 18:20:00
程式除了能動,可讀性也要顧慮到github專案都會避免一些特殊語法,效能說真的差異不大相對於網路延遲,mem copy的時間小到可以忽略除非你是寫driver我會推薦 a->b->c->d[i] 一眼就知道在幹麻
作者: longlongint (華哥爾)   2017-10-17 19:24:00
選我 *(p++)

Links booklink

Contact Us: admin [ a t ] ucptt.com