繁体   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