【发布时间】:2014-09-21 05:30:44
【问题描述】:
下面代码中的“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;
}
【问题讨论】:
-
请澄清该表达的哪一部分让您感到困惑。那里发生了很多事情。
-
@DavidGrayson:它在标题中......以及问题中的第一个也是唯一一个句子。 OP如何更清楚?是的。
-
@EdS。也许OP只是不知道三元运算符是什么。也许他不知道如何返回 memcpy。这是一个合理的担忧
-
我们都在猜测他不知道三元运算符是什么,但可能他实际上对
return、NULL或memcpy感到困惑。他应该告诉我们。 -
我的问题是关于“三元运算符”,谢谢大家:)
标签: c ternary-operator conditional-operator