why does line 34 use '0'

int **split_array(const int *s, int length) {
     int **p;
        p=(int**)malloc(sizeof(int*)*2);
        int l1,l2;
        if(length%2==0){
                l1=l2=length/2;
        }
        else {
                l1=length/2+1;
                l2=length/2;
        }
        p[0]=(int*)malloc(sizeof(int)*l1);
        p[1]=(int*)malloc(sizeof(int)*l2);
        l1=l2=0;
        for(int i=0;i<length;i++){
                if(i%2==0){
                        p[0][l1++]=s[i];
                }
                else p[1][l2++]=s[i];
        }
        return p;

}

int *build_array(char **strs, int size) {
     int *p=(int*)malloc( sizeof(int)*size);
        int j;
        for(int i=0;i<size;i++){
                p[i]=0;
        }
        for(int i=1;i<=size;i++){
                j=0;
                while(strs[i][j]!='\0'){
                        p[i-1]=p[i-1]*10+strs[i][j]-'0';
                        j++;
                }
        }
        return p;


}
