В следующем коде:C - указатель арифметика
int strlen(char *s){
char *p = s;
while(*p++ != '\0');
return p - s;
}
Почему выше оценивают иначе, чем это:
int strlen(char *s){
char *p = s;
while(*p != '\0') p++;
return p - s;
}
Это мое понимание того, что выражение будет оценивать первый, а затем увеличить.
Вы понимаете, что существует разница между «i ++» и «++ i'? –
Оба увеличивают переменную на 1 и приводят к тому же ответу, если не в выражении. Я могу правильно использовать их на практике, но мне показалось, что подобное использование с указателями дало разные результаты. Как и в: if (i ++> 5), исходное значение i будет использоваться и увеличиваться после оценки. – sherrellbc
Потому что между ними есть разница, но это не имеет никакого отношения к указателям. Попробуйте 'int i = 3, j = 3; printf ("% d,% d \ n", ++ i, j ++); '. –