簡體   English   中英

字符數組和 uintptr_t

[英]Char Array and uintptr_t

我正在閱讀什么是 uintptr_t 數據類型,但我仍然無法在這里理解uintptr_t

  • 首先將臨時char 數組類型轉換為unsigned long int類型,然后再轉換回char*類型,它的用途是什么。

考慮下面的代碼快照

strncpy(pCfgMgr->mGlobalCfg.grMap[index].userName,
       (char *)(uintptr_t) grParams.peerUsrName, 16); /*index is 0 */

其中pCfgMgr->mGlobalCfg.grMap[index].userName中的userName pCfgMgr->mGlobalCfg.grMap[index].userName是一個聲明為的字符數組

char userName[MAX_USERNAME_LENGTH]; /* MAX_USERNAME_LENGTH is 16 */

peerUsrName中的grParams.peerUsrName也是一個 char 數組,聲明為

char peerUsrName[16];

我沒有得到的是uintptr_t在復制時產生的不同,這只是unsigned long int別名 我很想知道開發人員在這里使用uintptr_t在想什么,是否推薦

盡管在strncpy()語句上方沒有uintptr_t會產生相同的輸出。

所有幫助表示衷心感謝。

演員表是不必要的。

strncpy的第二個參數的類型為const char * char *類型的表達式在這里也有效。 grParams.peerUsrName類型為char [16] 大多數情況下的數組衰減為指向第一個元素的指針。 因此,當您將它傳遞給strncpy它會衰減為char *類型,這正是它所期望的。 所以不需要演員表。

暫無
暫無

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

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