The way that small c parses strings in function calls is why this works.
Basically if you have a string of: new hi[5] = "Hello". That's
[0]: h
[1]: e
...
[4]: o
[5]: ^0 //null terminated string
If you pass to a function check( hi[2] ), what gets passes is check( "llo" ).
So in your example since j is null aka. 0 its passing a starting point of the string at 0.
There was a good post about this in snippets/tutorial by Twilight Suzuka.