問題:如果你保存並使用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