[英]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.