我以前看了某位大大的分析,多引數函式呼叫會比單一引數更加花費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語言和 語言中函式引數的傳遞
在呼叫乙個函式時進行引數傳遞 不只是講引數列表裡的引數,包括函式返回值的引數傳遞 其本質上進行的工作都是一樣的,即使用實參初始化形參。實參與形參本質上是兩個完全不同的變數,它們之間並沒有更深入的聯絡,僅僅只是變數與初始值的關係而已。很普通的那種,大家都了解的差不多。在此處需要強調一下,所謂傳值,其實...