p3比力特殊,放在FLASH內,指到RAM,事實如許有什麼用呢?例若有一個動態字串要顯示,很較著的,內容要放在RAM,程式固定在某個處所抓資料,所以位址存在FLASH內便可,可以省點RAM 翻譯空間,也許有人認為才2個bytes有什麼好省的,但是如果是顯示多國語言字型,有好多的pointer要存,就有差別了。
給個結論,p1與p2的功能會一樣 翻譯社
有一塊記憶體叫p3。....(1)
const int * const p4;
所以看一下另一個宣告:
(2)這【全部工具】是const...(3)
(3)這【全部器械】是int
【int const * const p5】,所以p5功能同p4 翻譯社
知道是什麼意思了吧!p4會放在FLASH內,它指到的某個16bit 翻譯處所,阿誰處所是flash。
int const * p2; 可以想想看,如果字型資料是放在NAND FLASH,HDD,乃至是SD CARD中,那該怎麼辦呢? 怎麼用呢?以上面阿誰多國說話字型為例,一般來講,字型資料是點矩陣資料,一定是放在FLASH內,所以要寫出一個embedded程式可以自由節制變數該放哪裡,要會做這些雜事,不要過度依靠compiler預設動作,那是弗成靠的,甚至是兩顆星星以上的pointer都要會,連void*也要會。 (2)這【全部器材】是int...(3) (1)這【全部工具】是pointer,p1預設放在RAM...(2) const int * p1; int const * p2; (3)這【全部東西】是const 有一塊記憶體叫p1。....(1) p1 翻譯公司p2,p3究竟不同在哪裡呢?這個地方講義也不太講,網路上也有一些希奇 翻譯诠釋,我的不一定對,只是一個看法罷了 翻譯社 解決這個問題前,先知道一下C語言 翻譯定名邏輯,若是我沒有記錯,C語言是【前面的】形容【後面的】,【後面的優先被compiler處置】,例如: 注重【整個工具】,例如(3)式,它的所謂全部東西,是包含(2)(1) 翻譯,其餘類推。 上述的意思就是:【有一塊記憶體叫var,它 翻譯型態是int】,這個基本邏輯知道後,就能夠解答前面的問題了。 int var; 有一塊記憶體叫p2。....(1) p1會放在【RAM】內,它指到某個【16bit】的地方,那個地方在【FLASH】。 (2)這【全部東西】是pointer...(3) (1)這【全部東西】是pointer,p2預設放在RAM...(2) 假定此時用一個16bit address 翻譯cpu,有RAM,有FLASH,假定int是指16bit變數,const是指FLASH的空間,注意這不是絕對。 const int * p1; p3會放在【FLASH】內,它指到的某個【16bit】的處所,誰人地方是【RAM】。 以一個沒有特殊設定的compiler來說 p2會放在【RAM】內,它指到【FLASH】內 翻譯某個處所,那個地方是【16bit】 翻譯社 別的當一顆星星(pointer)泛起 翻譯時刻,還沒有分外告訴compiler型態,此時就會以預設值替換,一般來說【預設值是ram】,注重有些cpu比力複雜,就不會只有ram這樣純真,多是internal sram、external 16bit ram或是external sdram這些對照複雜的可能性産生 翻譯社 int * const p3; int * const p3; (3)這【全部東西】是int (1)這【全部東西】是const,p3放在flash...(2)
留言列表