查看完整版本: 想詢問有關於指標的問題
頁: [1]

luckbook222 發表於 2017-2-2 04:00 PM

想詢問有關於指標的問題

我目前在做實驗的時候遇到一些問題
簡單的說就是透過網路模擬軟體模擬節點的傳輸(zigbee)
想詢問有關於一些有關於指標的概念

我現在在sicslowpan.c的send_packet中做了判斷預計要傳送封包(flen)
在發送時flen的值都能正常顯示,並且我用指標做儲存。
分別將各個節點的flen儲存在每個指標中,程式碼大概如下
if(node_id==1) *(flen_ptr+1)=flen;←如果是1號節點發送就將其存入第一個指標
if(node_id==2) *(flen_ptr+2)=flen;←如果是2號節點發送就將其存入第一個指標
if(node_id==3) *(flen_ptr+3)=flen;←如果是3號節點發送就將其存入第一個指標

並在sicslowpan.c的input中做了flen的解析(之後會嘗試將其移至contiki,目前先式在同之程式內呼叫),在程式碼中先做了sender節點的分析,程式碼大概如下
if(((uint8_t *)packetbuf_addr(PACKETBUF_ADDR_SENDER))==3){//判斷的部分確定沒問題
print f("node *flen_ptr=%0X\n",*(flen_ptr+1));
print f("node *flen_ptr=%0X\n",*(flen_ptr+2));
print f("node *flen_ptr=%0X\n",*(flen_ptr+3));
}

因為這支sicslowpan.c 在每個節點都會跑,因此當有節點有接收到封包時,就會將其印出。目前傳輸架構是node_3→node_2→node_1。現在遇到的問題是,我預期當node_3發送資料,照理來說應該將預計傳輸封包的數量存入*(flen_ptr+3)這個裡面,之候node_2收到後應該會顯示
node *flen_ptr=0
node *flen_ptr=0
node *flen_ptr=5←假設預期要傳5個封包

可實際上node_2接收到顯示
node *flen_ptr=0
node *flen_ptr=0
node *flen_ptr=0

這部分我不太了解,我有確認過記憶體位址,不論是3、2、1號節點在flen存入時都是相同的記憶體位址
但是不論怎麼存,在node2接收到flen的值都會顯示0,這是我目前遇到的問題,希望各位大大可以幫忙解惑。
...<div class='locked'><em>瀏覽完整內容,請先 <a href='member.php?mod=register'>註冊</a> 或 <a href='javascript:;' onclick="lsSubmit()">登入會員</a></em></div><div></div>

luckbook222 發表於 2017-2-6 03:07 PM

本帖最後由 luckbook222 於 2017-2-6 03:57 PM 編輯

*(flen_ptr+1)=flen;把flen的值放進flen_ptr所指向的陣列的第一個 所以問題是flen_ptr指到的陣列在哪?

指標不是在寫完後就會自動分配一段記憶體位址給它,之後在讓這個指標去指向我自行定義的陣列ptr_array
程式碼的部分我自己有在其他地方宣告:
int ptr_array;
*flen_ptr=&ptr_array;

東西的型態和flen相同?
相同 都是int型態

陣列的型態和 flen_ptr相同?
相同 都是int型態



...<div class='locked'><em>瀏覽完整內容,請先 <a href='member.php?mod=register'>註冊</a> 或 <a href='javascript:;' onclick="lsSubmit()">登入會員</a></em></div>

spadeg80078 發表於 2017-2-7 03:44 PM

本帖最後由 spadeg80078 於 2017-2-7 10:08 PM 編輯

    http://codepad.org/Ix0Mdz68

ouput 結果 1 5 3 4

其實你已經找出答案了...對吧?

o_g349 發表於 2017-9-13 01:19 PM

樓主你要不要看一下 node_2 在接收的時候有沒有真的收到 flen? 如果真的有收到 flen 且 flen 不為零,那麼 flen 一定會存到 flen_ptr 陣列的某個元素裡,在 if(node_id==1) 前一行 print 一下 flen 吧,看看 node_2 有沒有拿到 flen
頁: [1]