试了一下问题依旧啊
#include <stdlib.h>
#include <stdio.h>
int m=5;//行数
int n=3;//列数
void Print_mat(int **A,int Row_A,int Line_A)
//子函数:打印数组
{
int i,j;
for(i=0;i<Row_A;i++)//
{
for(j=0;j<Line_A;j++)
{
printf("%4d",A[i][j]);
if ((j!=0)&(j%(Line_A-1)==0) )
printf("\n");
}
}
}
long int *A(int **p,int m,int n)
//子函数A,更改数组内部的值
{
long int * ARR;
ARR=(long int*)calloc(3,sizeof(long int));
int i,j;
for(i=0;i<m;i++)
{
for(j=0;j<n;j++)
{
p[i][j]=p[i][j]-1;
}
}
printf("函数内部新指针p的地址是:%d\n",p);
ARR[0]=p;ARR[1]=m;ARR[2]=n;
return ARR;
}
int main()
{
int **p,**p1,i;
long int *ARR;
p=(int**)calloc(m,sizeof(int*));//创建二级指针,是整个数组的首地址
for(i=0;i<m;i++)
{
p[i]=(int*)calloc(n,sizeof(int));//创建一级指针,是每一行的首地址
}
printf("原始数组如下:\n");
Print_mat(p,m,n);
ARR=A(p,m,n);//调用函数
p1=ARR[0];
printf("新数组如下:\n");
Print_mat(p1,m,n);
}
【 在 haiyy 的大作中提到: 】
: 地址值一般是long型,你用int型保存会有警告
--
FROM 111.193.233.*