[問題] pointer to array

看板C_and_CPP (C/C++)作者 (築夢 逐夢 go~)時間10年前 (2015/08/10 09:43), 10年前編輯推噓0(004)
留言4則, 2人參與, 最新討論串1/1
開發平台(Platform): (Ex: VC++, GCC, Linux, ...) Linux/OSX 額外使用到的函數庫(Library Used): (Ex: OpenGL, ...) GNURAdio 問題(Question): 我目前卡在這個網頁範例 http://tinyurl.com/ofpb85p 從53 ~ 62行 根據這個範例 我寫了如下 vblock_impl::work(int noutput_items, gr_vector_const_void_star &input_items, gr_vector_void_star &output_items) { const float *in = (const float *) input_items[0]; float *out = (float *) output_items[0]; int ninputs = input_items.size(); //for (int i = 0; i < p_vlen; i++) for (int i = 0; i < noutput_items*p_vlen; i++) { int acc = ((float *) input_items[0])[i]; for (int j=1; j < ninputs; j++) acc += ((float *) input_items[j])[i]; out[i]= (float) acc + out[i]; //我想用陣列方式來寫 但上方這行可能有錯 } 上面程式可能有許多錯誤 我主要問題是input_items和output_items看起來是 array 但是要提取裡面element值 不斷要透過 (float *)指標去做型態轉換 這原因是為何? 這之間的相關性 搞得不是很懂 為何不能直接input_items[0][i] 這類直接做? 以及為何會有((float *) input_items[j])[i] 這種先一個維度型態轉變 然後再提取? 為何不能先整體型態轉換 (float*) input_items[j][i] 再一起提取? 另外這個vector性質array 所讀出的size 無法知道array總共有多少size 或者說 我該如何知道output_items 是幾維陣列? input_items.size()只會返回 其中一維的長度 但另外一維度我感覺是完全未知 希望版上大大能大概給個方向指引 謝謝囉 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 71.199.114.20 ※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1439171001.A.4FA.html ※ 編輯: naikojack (71.199.114.20), 08/10/2015 09:54:52

08/10 10:08, , 1F
你要去看 gr_vector_const_void_star 的定義.
08/10 10:08, 1F

08/10 10:09, , 2F
基本上就是個 C 的作法
08/10 10:09, 2F

08/10 10:09, , 3F
在沒用 template 的情況下就是用 void * 去指向任意型別
08/10 10:09, 3F

08/10 10:44, , 4F
懂了 謝謝樓上:)
08/10 10:44, 4F
※ 編輯: naikojack (71.199.114.20), 08/10/2015 10:44:28
文章代碼(AID): #1Lo06vJw (C_and_CPP)
文章代碼(AID): #1Lo06vJw (C_and_CPP)