⑴ c語言中,函數和函數指針,效率上差很多嗎
1.直接調用函數,編譯的時候,被調函數的地址(或偏移)直接寫入指令;
2.使用函數指針時,運行期從內存中取地址,在使用call指令
理論上,這存在效率差異。
根據你的系統環境:伺服器、PC還是嵌入式處理器、單片機等,及你的代碼的時間敏感程度:如時序嚴格的驅動還是MS,等等因素,自己可以判斷使用。還有一點需要強調:使用函數指針是為了獲得某種靈活或模型(C++編譯器內部大量使用函數指針),所以,這是一種平衡。
⑵ C語言用指針變數去修改變數的值比變數直接賦值效率高嗎
對於你的例子,是否使用指針效率是一樣的,沒有區別。
指針的高效簡潔體現在對復雜對象的操作上,
高效,比如傳遞一個類,如果使用地址傳遞,實際上只傳遞一個int大小的地址,而對象傳遞,則需要大量的內存空間復制一個臨時對象。
簡潔,體現在代碼的靈活上,也不是針對單一的簡單數據類型操作,今後的編程中,你經常可以看到類似這樣的語句:while(*p++) {...} 代碼比不使用指針要簡潔。
⑶ c語言用指針比較快是不是因為直接訪問尋找變數需要的時間比較多 而指針直接從地址訪問就不用定址費時了
用指針不是減少了定址的時間,是省略了計算地址的步驟,要做的工作少了,所以說速度快。
用指針比較快,這個概念有點過時了。現在的編譯器,代碼優化的效率是很高的,在設定高優化級別的情況下,兩者幾乎沒有差別。另一方面,使用指針編程相對復雜,更容易導致潛在的錯誤,就軟體工程的角度來看,犧牲可靠性來換取速度的小量提升(甚至速度沒有提升)是劃算的。
結論,減少指針的使用,使用索引就很好。要想提升執行速度,編譯的時候把優先順序別設的高一點就可以了。
⑷ 如何提高C語言程序運行效率
最主要的措施就是改進演算法,如控制循環次數;多使用中間結果,減少運算次數等。
此外還可以從程序設計技術角度採取一些措施:如盡量減少值傳遞,多用引用來傳遞參數;減少減少除法運算;多用局部變數等。
⑸ c語言中用指針的好處有哪些
指針非常的好,它把相同的事物歸類,然後把事物做出標記,避免給相同的特點做變數。比如說你和你同學,你們兩個人都有心臟、肝、肺等器官,如果命名心臟1、心臟2這樣比較麻煩,這時如果用上指針,指向你說心臟時說的是你的心臟,指向你同學時說的是你同學的心臟,如果人非常的多,你不用指針,那麼命名心臟1、2、3、4、5.。。。那是非常的多的不必要的變數。我現在運用PLC和WINCC連接時有的時候就用指針。節省了通訊時間,省略了很多的變數。
⑹ 為什麼說c語言指針比沒有指針調用數據快呢
從通俗意義上講,說指針的操作速度快是因為,我們只需要操作指針變數,而不用去具體的操作指針變數所指向的數據,這就是基本原理。具體的要針對具體的例子來說明了。
⑺ C語言 為什麼用指針變數效率較高
指針變數是有加減運算的,但是要注意以下幾點:
1.指針變數中存放的是地址值,也就是一個數字地址,例如某指針變數中的值是0x20000000,表示表示此指針變數存放的是內存中位於0x20000000地方的內存地址。指針變數可以加減,但是只能與整型數據加減,此時加減的含義並不是其地址值進行了加減,也就是說如果指針變數p的值是0x20000000,那麼p=p+2;的值並不是0x20000002,並不是地址值的簡單相加,那麼地址值加減多少是與指針指向的數據類型相關聯的,如果在32位的操作系統上,p是指向整型數據的指針變數,那麼p=p+2之後,p的地址值變成0x20000008,也就說實際上地址值加了多少呢:sizeof(int)*2這么多。說明白點,我們加減的數字是以指針指向的數據類型為量度的,P+2表示p在內存中前移兩個int的距離,如果p不是int類型,而是其他類型道理也是一樣。同樣指針與整型數據相減也是同樣的道理。
2.指針之間可以相減,但不可以相加:兩個同一類型的指針變數是可以相減的,他們的意義表示兩個指針指向的內存位置之間相隔多少個元素(注意是元素,並不是位元組數),例如對於int類型的指針p和p1. p1-p的意義表示他們之間相隔多少個int類型的元素。同樣對於其他類型的指針變數之間相減的意義也是一樣。 指針變數的自加和自減實際上是與整數1的加減運算。
3.指針之間可以比較大小。但是同樣也限於兩個相同類型的指針變數,不同類型的指針變數之間比較大小沒有任何意義。指針之間的大小比較的意義,表示在內存中他們指向的位置的高低關系。
如果還沒解決你的問題,可以加我網路HI賬號。