I have read that use of strlen
is more expensive than such testing like this:
We have a string x
100 characters long.
I think that
for (int i = 0; i < strlen(x); i++)
is more expensive than this code:
for (int i = 0; x[i] != '\0'; i++)
Is it true? Maybe the second code will not work in some situation so is it better to use the first?
Will it be better with the below?
for (char *tempptr = x; *tempptr != '\0'; tempptr++)
This code is calling
strlen(x)
every iteration. So ifx
is length 100,strlen(x)
will be called 100 times. This is very expensive. Also,strlen(x)
is also iterating overx
every time in the same way that your for loop does. This makes it O(n^2) complexity.This code calls no functions, so will be much quicker than the previous example. Since it iterates through the loop only once, it is O(n) complexity.
I can suppose that in first variant you find strlen each iteration, while in second variant you don't do that.
Try this to check: