文字列操作

1.
以下のように二つの方法で, s1, s2 の定義の初期化を行い、表示を 行うプログラムがある。

#include <stdio.h>

char    s1[]="pointer";
char    s2[7]={'p','o','i','n','t','e','r'};   

main(){
   int i;

   printf("%s\n", s1);
   for(i=0; i<7, i++)
      printf("%c", s2[i]);
}

s1, s2 の2つの初期化の違いにより表示方法が異なっている。この違いについて (ヌル文字とからめて)簡単に述べなさい。

2.
文字列を格納した配列(たとえば、上記 1. の s1[ ])の先頭ポインタを引数としてあたえらるとその文字列の長さを返す関数 int strlen2(char *s) を作成せよ。