Jakie jest zachowanie drukowania NULL ze specyfikatorem% s printf?
Spotkał się z ciekawym pytaniem z wywiadu:
test 1:
printf("test %s\n", NULL);
printf("test %s\n", NULL);
prints:
test (null)
test (null)
test 2:
printf("%s\n", NULL);
printf("%s\n", NULL);
prints
Segmentation fault (core dumped)
Chociaż może się to udać w niektórych systemach, przynajmniej moja kopalnia zgłasza błąd segmentacji. Jakie byłoby najlepsze wyjaśnienie tego zachowania? Powyższy kod jest w C.
Oto moje informacje o gcc:
deep@deep:~$ gcc --version
gcc (Ubuntu/Linaro 4.6.3-1ubuntu5) 4.6.3