C++對C的擴展——register關鍵字增強 register關鍵字:請求編譯器讓變量直接放到CPU內部寄存器里面,而不是通過內存尋址訪問,速度快。 在C語言中,register修飾的變量不能取地址,去寄存器變量的地址在C語言里面是會出錯的。
1.png (2.56 KB, 下載次數: 115)
下載附件
2018-3-5 19:45 上傳
2.png (3.21 KB, 下載次數: 100)
下載附件
2018-3-5 19:45 上傳
同樣的代碼我們放到C++編譯環境下,發現編譯是通過的!
3.png (5.72 KB, 下載次數: 84)
下載附件
2018-3-5 19:45 上傳
4.png (17.26 KB, 下載次數: 95)
下載附件
2018-3-5 19:45 上傳
在C++中依然支持register關鍵字,C++編譯器有自己的優化方式,不使用register也可能做優化;并且C++中可以取得register變量的地址,C++編譯器發現程序中需要取register變量的地址時,register對變量的聲明變的無效。早期的C語言編譯器不會對代碼進行優化,因此register變量是個很好的補充。 我們說一下C++編譯器的優化方式:
5.png (16.3 KB, 下載次數: 88)
下載附件
2018-3-5 19:46 上傳
像for循環這種頻繁使用i的地方,C++編譯器會做優化,將變量i放到寄存器里面,加快程序的執行速度。也就是C++即使不用關鍵字register也會優化。 【C++】筆記系列均為原創,轉載請注明轉自微號:Lightspeed-Tech 或 AutoCode 更多精彩資料,請關注!
|