gpt4 book ai didi

c - "return p ? memcpy(p, s, len) : NULL;"是什么意思?

转载 作者:太空宇宙 更新时间:2023-11-04 05:02:56 25 4
gpt4 key购买 nike

下面代码中的“return p ? memcpy(p, s, len) : NULL;”是什么意思?(更一般地说,什么是条件运算符,a ? b : c?)

char * strdup(const char * s)
{
size_t len = 1+strlen(s);
char *p = malloc(len);

return p ? memcpy(p, s, len) : NULL;
}

最佳答案

此语法称为三元运算符,您可以将其视为简化的 if 语句。 返回 p ? memcpy(p, s, len) : NULL; 等同于:

if(p)
return memcpy(p, s, len);
else
return NULL;

memcpy() 函数返回一个指向 dest 的指针,它是 memcpy 的第一个参数,在您的例子中是 p。因此,如果 p 的值不同于 0(指针不为 NULL),则返回该指针。否则,返回 NULL。

关于c - "return p ? memcpy(p, s, len) : NULL;"是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25022164/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com