如果我有一個int數組一些,讓我們只說:何時將類型應用於指針算術邏輯?
int iarr[5] = {0, 7, 3, 12, 99};
這是目前在地址0xbfdf53a8
;我想打印出的該值與一個循環,我可以做這樣的事情:
for(i=0; i<5; i++)
printf("value of iarr[%d] = %d\n", i, *(iarr+i));
這個循環的工作,因爲我們通過一個「INT」每次遞增(地址由4被撞在典型的32位機器上進行每次迭代的字節)。
我的問題是,何時應用指定的字節偏移類型?是編譯過程的一部分(意味着它在程序集中),還是在操作系統級別完成?
我會假設這是如何以標準化的方式處理,但我還沒有找到答案。
編譯器生成代碼來執行它。它知道它生成代碼的CPU /環境。 –
'*(iarr + i)'完全等同於'iarr [i]'。當然,這是一種C語言功能,並且與OS完成的任何操作都沒有遠程關聯......但可以由具有索引指令的機器上的CPU完成。 –