[英]Char Array and uintptr_t
我正在閱讀什么是 uintptr_t 數據類型,但我仍然無法在這里理解uintptr_t
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.