开发平台(Platform): (Ex: VC++, GCC, Linux, ...)
GCC
额外使用到的函数库(Library Used): (Ex: OpenGL, ...)
None
问题(Question):
想尝试练习指标与阵列的相关使用
compile时就宣告好大小的二维阵列依照置底方式传递应该没问题
在动态配置的阵列传递时,想要采用转成一维阵列却无法得到正确结果
喂入的资料(Input):
row=5
column=5
预期的正确结果(Expected Output):
1 1 1 1 1
1 1 1 1 1
1 1 1 1 1
1 1 1 1 1
1 1 1 1 1
错误结果(Wrong Output):
5*5的完全不是1的数字
程式码(Code):(请善用置底文网页, 记得排版)
#include<stdio.h>
int c_array(int *a,int row,int column,int i,int j)
{
printf("%d ",*( a + i*column +j ) );//使用pointer来控制矩阵
}
int main(void)
{
int **ptr=NULL;
int row,column;
int i,j;
while(1)
{
printf("row=\n");
scanf("%d",&row);
printf("column=\n");
scanf("%d",&column);
if(row==0 && column==0) break;
ptr=(int**)malloc(sizeof(int*)*row);
//生成一维指标阵列
for(i=0;i<row;i++)
{
ptr[i]=(int*)malloc(sizeof(int)*column);
}//二维
for(i=0;i<row;i++)
{
for(j=0;j<column;j++)
{
ptr[i][j]=1;
}
}//将矩阵付值:1
for(i=0;i<row;i++)
{
for(j=0;j<column;j++)
{
//printf("%d",ptr[i][j]);//测试用
c_array((int*)ptr,row,column,i,j);//使用另外函数来print
}
printf("\n");//换行
}
for(i=0;i<row;i++) free(ptr[i]);
free(ptr);//释放内存
}
return 0;
}
补充说明(Supplement):
无