Re: [問題] pthread及參數為指標的問題

看板C_and_CPP作者 (「雄辯是銀,沉默是金」)時間5年前 (2018/10/11 18:26), 編輯推噓3(308)
留言11則, 3人參與, 5年前最新討論串2/2 (看更多)
#include <stdio.h> int ret; void *(myf) (void *arg) { int *my_arg_L = (int *)arg; printf("myf arg: %p\n", arg); printf("my_arg_L: %d, %d\n", my_arg_L[0], my_arg_L[1]); ret = 99; return &ret; } int create(void *(*start_routine) (void *), void *arg) { printf("arg: %p\n", arg); start_routine(arg); return 0; } int main(int argc, char *argv[]) { int p=2, q=100; int arg_L[2] = { p, q-1 }; printf("arg_L: %p\n", arg_L); int r = create(myf, (void *)arg_L); printf("r: %d\n", r); return 0; } 模擬的程式行為, 讓你參考看看。 ※ 引述《skyHuan (Huan)》之銘言: : 開發平台(Platform): (Ex: Win10, Linux, ...) : Linux : 額外使用到的函數庫(Library Used): (Ex: OpenGL, ...) : pthread : 問題(Question): : 最近在做多執行緒的實作遇到兩個問題 : 1. : 因為pthread_create要呼叫的函式需要的參數是用指標宣告 : 所以函式的參數宣告成(void *) : 我用一個args array傳入參數 : 那這個參數在函式中該怎麼取用呢 : 我寫的直接用arg[0], arg[1]應該是錯的 : compiler會有dereferencing "void *" pointer的warning -- 紙上得來終覺淺,絕知此事要躬行。 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 113.196.174.254 ※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1539253589.A.03F.html

10/11 22:45, 5年前 , 1F
感謝您還想了一個例子,我對函式間的傳遞呼叫有更了解了
10/11 22:45, 1F

10/11 22:45, 5年前 , 2F
10/11 22:45, 2F

10/11 22:49, 5年前 , 3F
另外請問一個問題,您create韓式的參數宣告void *(*start
10/11 22:49, 3F

10/11 22:50, 5年前 , 4F
_routine) (void *),我的理解是create收一個void型別的
10/11 22:50, 4F

10/11 22:50, 5年前 , 5F
地址,這個地址是函式(*start_routine) (void *)的地址,
10/11 22:50, 5F

10/11 22:50, 5年前 , 6F
所以呼叫時直接傳myf,意思是myf這個函式在當引數時是以
10/11 22:50, 6F

10/11 22:50, 5年前 , 7F
這個函式的地址傳入,這樣對嗎
10/11 22:50, 7F

10/11 23:57, 5年前 , 8F
start_routine 是一個 point 指向回傳 void * 的 funct
10/11 23:57, 8F

10/11 23:57, 5年前 , 9F
ion
10/11 23:57, 9F

10/12 00:06, 5年前 , 10F
變數怎麼唸 可以看這篇 https://bit.ly/2PtkDmO
10/12 00:06, 10F

10/12 00:12, 5年前 , 11F
懂了!感謝大家這個板真的好多大神有你們真好><
10/12 00:12, 11F
文章代碼(AID): #1RloLL0_ (C_and_CPP)
文章代碼(AID): #1RloLL0_ (C_and_CPP)