请高手帮忙,有关malloc函数
(这段代码看不懂也没关系,与代码本身关系不大)这段代码有两个自定义函数组成,sx(),sy(),还有一个主函数,自定义函数没问题,问题出现在函数调用,涉及二维数组动态分配内存malloc()函数,这是前几天一个帖子上的题,运行结果是(发不了图片)1 1 1 1 1 1
1 2 2 2 2 1
1 2 3 3 2 1
1 2 3 3 2 1
1 2 2 2 2 1
1 1 1 1 1 1
自定义函数测试没问题,自定义函数用的是*p,但是主函数由于涉及二维数组动态分配内存,用的是int **p 二级指针,所以我的函数调用部分
sx(m,s);
sy(m,s);
就出问题了,这道题好不容易做出来了,在最后的时候出问题,很急啊,请各位高手帮忙,把我的函数调用修改一下。
程序代码:#include<stdio.h>
#include<malloc.h>
void sx(int m,int *p)
{
int i,*q;
for(i=0;i<m/2;i++)
{
int k=0;
while(k<(m-2*i))
{
*(p+m*i+i+k)=i+1;
k++;
};
k=0;
while(i>0&&k<i)
{
*(p+m*i+k)=k+1;
*(p+m*(i+1)-1-k)=k+1;
k++;
}
}
q=p+m*m-1;
while(p<q)
*q--=*p++;
}
void sy(int m,int *p)
{
int i,*q;
for(i=0;i<(m+1)/2;i++)
{
int k=0;
while(k<(m-2*i))
{
*(p+m*i+i+k)=i+1;
k++;
};
k=0;
while(i>0&&k<i)
{
*(p+m*i+k)=k+1;
*(p+m*(i+1)-1-k)=k+1;
k++;
}
}
q=p+m*m-1;
while(p+m<q)
*q--=*p++;
}
void main()
{
int i,j,m;
int **s;
printf("输入矩阵边长\n");
scanf("%d",&m);
s=(int**)malloc(sizeof(int*)*m);
for(i=0;i<m;i++)
s[i]=(int*)malloc(sizeof(*s));
if(m%2==0)
sx(m,s);
else
sy(m,s);
for(i=0;i<m;i++)
{
for(j=0;j<m;j++)
printf("%d",s[i][j]);
printf("\n");
}
}
[ 本帖最后由 sanjianfei 于 2012-3-8 15:04 编辑 ]







