Первый вызов fun1
здесь ret = fun1(color[offset]);
возвращает 3
, поскольку color[0][3]
и color[0][4]
оба |
.
Затем вы добавляете ret
к offset
, делая его3
.
В следующем вызове fun1
вы передаете его color[offset]
, который является color[3]
, что является "\0"
, обратите внимание, что это не NULL
егостроковый литерал, содержащий только символ nul
.
Чтобы уточнить:
char *str = NULL; // str is null pointer.
char *str = 0; // same as above.
char *str = "\0"; // str is pointer to an empty string literal.
char *str = ""; // same as above.