求各位朋友帮忙纠错!该如何处理

求各位朋友帮忙纠错!!!
昨天发过一个类似的帖子,结果被忽悠了,我想输出二维数组,结果给的解决方案是用的一维指针
代码如下:
主函数
#include<stdio.h>
#include <stdlib.h>
#include<math.h>
#include"ceshi2.h"

int main()
{
int i,j;
double **Pgr;

int ceshi2(double **Pgr);
Pgr=(double**)malloc(1280*sizeof(double*));
for(i=0;i<1280;i++) 

Pgr[i]=(double*)malloc(128*sizeof(double)); 
}
ceshi2(Pgr);

for(i=0;i<1280;i++)
{
for(j=0;j<128;j++)
{
            printf("%lf ", Pgr[i][j]);
}
}
return 0;
}

被调函数
#include<stdio.h>
#include<math.h>
extern int ceshi2(double **Pgr)
{
int i,j,k,o,ww;
for(i=0;i<5;i++)
{
for(j=0;j<256;j++)
{
for(k=0;k<128;k++)
{
o=i*256+j;
ww=k;
*((double*)Pgr+128*o+ww)=j;
}
}
}
return 0;
}

附上头文件
#ifndef _CESHI2_H
#define _CESHI2_H

extern int ceshi2(double **Pgr);

#endif

请各位大神帮忙看看到底哪里错了,现在编译能通过,一运行就显示已停止工作,请大神们说明错在哪并且附上能运行的程序代码,谢谢大家了!
------解决思路----------------------
                *((double*)Pgr+128*o+ww)=j;

你输入的已经是一个指针的指针(即数组的数组),而不是一个单纯的数组。
Pgr[o][ww]=j
就好。。。