雖然這樣沒(méi)有加強(qiáng)制轉(zhuǎn)換的賦值是有問(wèn)題的。但是編譯能通過(guò),就很好奇為什么出現(xiàn)這樣的問(wèn)題?
tim_index是指針,這只是一個(gè)簡(jiǎn)單的指針加整數(shù)的問(wèn)題。
FAE您好,這里我不太明白,為什么指針加這個(gè)整數(shù),得不到期望的值。
您好,這屬于C語(yǔ)言指針運(yùn)算問(wèn)題,TIM_TypeDef *tim_index = TIM4;該句相當(dāng)于聲明指針類(lèi)型并將TIM4地址賦值給tim_index,然后你用tim_index+某個(gè)數(shù),相當(dāng)于獲取的是后面某個(gè)地址。比如你加0x32得出值為0x40001840,0x1840值為相較于0x0800,變化為0x1040,換算成十進(jìn)制就是4160,0x34換算成十進(jìn)制就是52,4160/52=80,由sizeof(TIM_TypeDef)可知結(jié)構(gòu)體大小為80個(gè)字節(jié),因此計(jì)算得出的是偏移之后的地址。若要得出某個(gè)值需要進(jìn)行強(qiáng)制類(lèi)型轉(zhuǎn)換。網(wǎng)上也有很多關(guān)于指針運(yùn)算的講解,可以自己去搜索學(xué)習(xí)一下
好的,感謝您的回復(fù)。