问题:如果你保存并使用memchr的返回值,在if中? “if(ptr = memchr(str1,'4',sizeof(str1)))”?
if (ptr = memchr(str1, '4', sizeof(str1)))
{
// do stuff using ptr
}
,那么你就进入,每一次做的“东西”。 但是,如果你只是做
if (memchr(str1, '4', sizeof(str1)))
{
// would do stuff but don't have ptr!
}
那么你会进入,但你不会有指针到“4”是内部STR1。 我需要评估和做的东西了几种可能性,即如果“4”,否则,如果“7”,否则,如果“1”等
那么,什么是最有效的方法,如果该字符都存在评估和使用返回的指针,如果它?当然这不是
if (memchr(str1, '4', sizeof(str1)))
{
ptr = memchr(str1, '4', sizeof(str1))
// do stuff using ptr
}
不,你的第一个陈述是不正确的。如果你执行'if(ptr = memchr(...)){}'如果字符没有定位,你将不会进入if-block,因为memchr()返回NULL值,假。 – Kusalananda
请注意,如果'str1'是一个指针而不是数组,那么'sizeof(str1)'不会做你期望的。 –
在第一个选项中,它并不评估NULL,它是评估null到ptr的赋值,它将返回true,就像如果你写了“if(ptr = 0)”或“if(ptr = 1)”一样 - 分配成功完成并返回1. – paIncrease