2012-02-05 77 views
0

嗯,我必須恢復一個在此之前回答過的問題。由於其他原因我做了一些更改,現在我又遇到了問題。下面是相關的細節:從不同大小的整數轉換爲指針[-Wint-to-pointer-cast]

volatile char RxBuffer1[NEMA_BUFFER_LENGTH]; 
uint32_t NEMA_TypeStart; 
char NEMA_Type[10]; 
uint32_t len; 
... 

memcpy(NEMA_Type,(const char*)RxBuffer1[NEMA_TypeStart], len); 

跟投,我得到在主題行中顯示的錯誤。如果沒有投我得到:

合格「的memcpy」參數2,使指針從整數沒有 投

注意,如果我使用strncpy()函數,而不是同樣的事情發生。所以我很難過。我以爲我明白,memcpy使用void *。我究竟做錯了什麼?

回答

1

您需要將地址傳遞給memcpy。我會假設你想:

memcpy(NEMA_Type,(const char*) &RxBuffer1[NEMA_TypeStart], len); 
+0

你答案是正確的。謝謝。我想我是試圖學習速度的受害者。我認爲字符串變量真的是C中的一個指針,換句話說,我認爲RxBuffer1 [n] ==&RxBuffer1 + n – user1160866 2012-02-05 06:00:12

+0

'RxBuffer'不是一個字符串,它是一個數組。例如,你可以做'Rxbuffer [2] = RxBuffer [0]',所以它們必須是數組元素的值。 – 2012-02-05 06:01:22

+0

並且不要將演員放在那裏,它只是分散問題 – 2012-02-05 09:58:18

1

它已經一段時間,但我認爲你需要,而不是說這個......

memcpy(NEMA_Type, &RxBuffer1[NEMA_TypeStart], len); 

你也可以說...

memcpy(NEMA_Type, RxBuffer1 + NEMA_TypeStart, len); 
相關問題