[問題] 指標 傳值?傳址?
看板C_and_CPP (C/C++)作者tuzr (Never Stop)時間12年前 (2013/09/24 23:19)推噓1(1推 0噓 10→)留言11則, 4人參與討論串1/2 (看更多)
開發平台(Platform): (Ex: VC++, GCC, Linux, ...)
KeilC 8051
問題(Question):
有一筆資料,是由IC傳給我的,型態為 unsigned char *Data
當收到資料的時候,會觸發ReceiveTask()這段程式.
unsigned char ReceiveBuffer[8];
void ReceiveTask(unsigned char XDATA *Data)
{
Analyze(*Data);
}
void Analyze(unsigned char *Data)
{
for(int i=0;i<8;i++,Data++)
{
ReceiveBuffer[i]=*Data;
}
//在這段程式裡面 ReceiveBuffer[]的資料,都是正確的
//也就是我真正收到的資料.
}
但是,當我在別的地方,再次呼叫ReceiveBuffer[]的時候,
會發現ReceiveBuffer[]的數值改變了.
( ReceiveTask()並沒有被觸發 )
請問是否是因為*Data 該位址的數值被改變了呢?
請教是否有辦法,讓ReceiveBuffer的值在執行Analyze()之後就不會被改變呢?
實際應用是這樣的,我從網路TCP端收到資料,
利用ReceiveTask()這個API將數值取出來。
分析之後,我將ReceiveBuffer[]的數值放到另外一個陣列,
然後透過TCP回傳給Client
至於存取方式,IC廠商提供的API就是unsigned char *Data
所以我想應該沒辦法改變用指標存取的事實?
想請教是否有辦法把指標裡面的"數值" 真正的放到變數裡面,而不是放位址.
謝謝大家~請多多指教
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 122.117.160.28
→
09/24 23:20, , 1F
09/24 23:20, 1F
→
09/24 23:20, , 2F
09/24 23:20, 2F
→
09/24 23:35, , 3F
09/24 23:35, 3F
→
09/24 23:35, , 4F
09/24 23:35, 4F
→
09/24 23:39, , 5F
09/24 23:39, 5F
→
09/25 02:20, , 6F
09/25 02:20, 6F
→
09/25 02:22, , 7F
09/25 02:22, 7F
推
09/28 13:25, , 8F
09/28 13:25, 8F
→
09/28 13:26, , 9F
09/28 13:26, 9F
→
09/28 13:26, , 10F
09/28 13:26, 10F
→
09/30 16:14, , 11F
09/30 16:14, 11F
討論串 (同標題文章)
完整討論串 (本文為第 1 之 2 篇):
1
11
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章