Я читал Что такое тип данных uintptr_t , но я все еще не могу понять uintptr_t
здесь как
- для каких целей он сначала преобразует временно массив символов тип в тип
unsigned long int
, а затем обратно обратно в тип char*
.
Рассмотрим приведенный ниже снимок кода
strncpy(pCfgMgr->mGlobalCfg.grMap[index].userName,
(char *)(uintptr_t) grParams.peerUsrName, 16); /*index is 0 */
, где userName
в pCfgMgr->mGlobalCfg.grMap[index].userName
- это не что иное, как массив символов, объявленный как
char userName[MAX_USERNAME_LENGTH]; /* MAX_USERNAME_LENGTH is 16 */
И peerUsrName
в grParams.peerUsrName
также является массивом символов, объявленным как
char peerUsrName[16];
То, чего я не получил, это то, что , что uintptr_t
имеет значение при копировании, что является ничем иным, как псевдонимом unsigned long int
. Мне любопытно узнать , о чем думал разработчик, используя uintptr_t
здесь & рекомендуется ли ?
Хотя без uintptr_t
выше оператор strncpy()
выдает тот же результат.
Все помогают оценены искренне.