The difference (without optimization) between using a[j][i] verses *pi is:
C code is 
    for (k=j;k<n;k++) v[k] = 0;
or
    for (pk=&v[j];pk<&v[n];pk++) *pk = 0;

a[j][i] has
  movl    %eax,4(%esi,%edi,8)
  movl    %eax,4(%esi,%edi,8)
  incl    %edi


and *pi has
        movl    %eax,4(%edi)
        movl    %eax,4(%edi)
        addl    $8,%edi
	.
	.
        leal    (%esi,%ebx,8),%eax

which is faster?  I am not sure.

With optimization:  it is the SAME as above (basically, exact INSIDE loop)

