執行緒函式的引數變數傳遞注意事項

2021-10-11 09:39:52 字數 1225 閱讀 3707

//部分**如下:

int k=1;

createthread(null,0,(lpthread_start_routine)smooth1,&k,null,null);

//其中的smooth1()函式:

void smooth1(int i)

//我在int j=i;設定斷點,i的值為34600292

//你傳的是乙個區域性變數的位址,這塊內存在函式結束後會釋放掉的,你直接傳值好了

//部分**如下:

int k=1;

createthread(null,0,(lpthread_start_routine)smooth1,(lpvoid)k,null,null);

//其中的smooth1()函式:

dword winapi smooth1(lpvoid i)

//更換引數為結構體後還有問題:

中部分**:

void *smooth1(void *smarg);

typedef structsmstruct;

中部分**:

smstruct argm1;//smstruct為一結構型別

argm1.lpnewdibbits=lpnewdibbits;//為結構中各成員賦值

argm1.lpdibbits=lpdibbits;

argm1.lwidth=lwidth;

createthread(null,0,(lpthread_start_routine)smooth1,&argm1,null,null);

中的smooth1()函式:

void *smooth1(void *smarg)

//在smooth1()函式中,smarg1中的成員值傳遞不正確

正確方式:

smstruct *argm1=new smstruct;//smstruct為一結構型別,分配到堆上

argm1->lpnewdibbits=lpnewdibbits;//為結構中各成員賦值

argm1->lpdibbits=lpdibbits;

argm1->lwidth=lwidth;

createthread(null,0,(lpthread_start_routine)smooth1,(lpvoid)argm1,null,null);

中的smooth1()函式:

void *smooth1(lpvoid smarg)

qsort的比較函式傳遞引數注意事項

使用qsort進行快速排序過程中需要傳遞乙個比較函式,這個函式有兩個引數,形如const void a,const void b,具體轉換成哪種型別就要看情況了。若是整形陣列,則在比較函式中進行如下轉換,int a int b 若是double,則在函式中進行如下轉換,double a,double...

Lua 函式作為引數傳遞時的注意事項

有乙個函式是這樣的 function car setspeed t speed self.speed t speed print self.speed end我準備呼叫 函式的函式 function cardriver tapgas self,callback currentspeed curren...

變數的注意事項

以下是自己的經驗 全域性變數命名 g 變數名 區域性變數命名 l 變數名 成員變數 m 變數名 為什麼這樣做呢?因為現在的 的量越來越大,如果沒有很好的命名規則,導致 的可讀性太差 所以當我按照上述的規則,我就能馬上分清是函式變數 不需要特殊字首 區域性變數,成員變數和全域性變數 大家都知道變數要在...