簡體   English   中英

我不明白一些舊的C數組連接

[英]I don't understand some old C array concatenation

我在這個舊的C程序中不理解這種語法,並沒有設置為測試代碼以查看它的作用。 我困惑的部分是數組的連接。 我不認為C可以像這樣處理自動類型轉換,或者我在周五下午讓我覺得太難了......

char wrkbuf[1024];
int r;
//Some other code
//Below, Vrec is a 4 byte struct
memcpy( &Vrec, wrkbuf + r, 4 );

知道這會發生什么嗎? 當你連接或添加一個int時, wrkbuf變成什么?

wrkbuf + r&wrkbuf[r]

基本上wrkbuf在表達式中使用wrkbuf + 4 “衰變”成指向第一個元素的指針。 然后將r添加到它,它將指針推進r元素。 也就是說這里沒有連接,它正在做指針算術。

memcpy( &Vrec, wrkbuf + r, 4 ); 從wrkbuf數組復制4個字節,從第r個元素開始到Vrec的內存空間

memcpy(&Vrec, wrkbuf + r, 4)wrkbufr個位置復制4個字節到Vrec 向數組中添加int時,會得到它的第r個位置的內存地址,在本例中為&wrkbuf[r]

示例memcpy C實現(如您所見,它與strcpy非常相似):

void *
memcpy (void *destaddr, void const *srcaddr, size_t len)
{
  char *dest = destaddr;
  char const *src = srcaddr;

  while (len-- > 0)
    *dest++ = *src++;
  return destaddr;
}

看到:

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM