C語言中引數傳遞優化

2021-08-25 01:53:30 字數 562 閱讀 3034

我以前看了某位大大的分析,多引數函式呼叫會比單一引數更加花費cpu時間,因此使用結構體封裝引數。但是通過分析得到了自己的見解,關於這點是不能一概而論的。仔細檢視win32 api你就會發現,只是擁有眾多引數的時候才會使用結構體封裝,引數少的時候,不進行封裝的,因為你給結構體中的元素賦值也需要花費cpu時間,這些是等價的,而且還帶來了呼叫函式的不方便。

我舉例說明:

void add1(int a, int b);

typedef struct tag_add_param

int a;

int b;

}add_param;

void add2(add_param *param);

add1 要比 add2好,呼叫方便,代價花費差不多。

原因:add1(1, 2);

add_param param;

param.a = 1;

param.b = 2;

add2(¶m);

add1的引數很多的情況下,那麼add2就要好點了。

原因:每個引數傳遞都會增加push語句,那麼會花費一些cpu時間的。

C語言中的引數傳遞

問 你認為這個函式是在做什麼呀?答 好像是對引數 x,y的值對調吧?請往下看,我想利用這個函式來完成對a,b兩個變數值的對調,程式如下 void main 我問 exchg1 裡頭的 printf x d,y d n x,y 語句會輸出什麼啊?我再問 exchg1 後的 printf a d,b d...

C語言中引數的傳遞方式

c語言中引數的傳遞方式一般存在兩種方式 一種是通過棧的形式傳遞,另一種是通過暫存器的方式傳遞的。這次,我們只是詳細描述一下第一種引數傳遞方式,另外一種方式在這裡不做詳細介紹。首先,我們看一下,下面乙個簡單的呼叫例程 int add int a,int b,int c void main 借助以上例程...

c語言和 語言中函式引數的傳遞

在呼叫乙個函式時進行引數傳遞 不只是講引數列表裡的引數,包括函式返回值的引數傳遞 其本質上進行的工作都是一樣的,即使用實參初始化形參。實參與形參本質上是兩個完全不同的變數,它們之間並沒有更深入的聯絡,僅僅只是變數與初始值的關係而已。很普通的那種,大家都了解的差不多。在此處需要強調一下,所謂傳值,其實...