请问C语言函数能返回针向二维数组的指针吗,能给个例子吗,先谢了。
int a[5][5];
??fun(void)
{
return ?;
}
void main()
{
int (*p)[5];
p=fun();
}
问题点数:30、回复次数:9Top
1 楼yckyck()回复于 2003-08-03 22:47:54 得分 0
help meTop
2 楼guoqing89383859(国庆)回复于 2003-08-03 23:22:09 得分 0
int a[5][5];
int *fun()
{
return a;
}
void main()
{
int *p;
int i,j,x=0;
for(i=0;i<5;i++)
for(j=0;j<5;j++)
a[i][j]=x++;
p=fun();
for(i=0;i<5;i++)
for(j=0;j<5;j++)
printf("%d",*((p+i)+j));
scanf("%d",i);
}Top
3 楼huigll(会)回复于 2003-08-03 23:35:57 得分 30
#include <stdio.h>
#include <malloc.h>
#define N 5
#define M 5
int **fun(void);
int main()
{
int **p,i,j;
p=fun();
for(i=0;i<N;i++)
{
for(j=0;j<M;j++)
printf("%6d",p[i][j]);
printf("\n");
}
for(i=0;i<N;i++)
free(p[i]);
free(p);
return 0;
}
int **fun()
{
int **p,i,j;
p=(int **)malloc(sizeof(int)*M);
for(i=0;i<N;i++)
p[i]=(int *)malloc(sizeof(int)*M);
for(i=0;i<N;i++)
{
for(j=0;j<M;j++)
p[i][j]=(i+1)*(j+1);
}
return p;
}
Top
4 楼guoqing89383859(国庆)回复于 2003-08-04 00:07:29 得分 0
不好意思,好就不用c了
用指针输出二维数组的句子有错误,你在查查吧Top
5 楼ZZH1983(ZZH)回复于 2003-08-04 09:54:09 得分 0
int a[2][2] = { 1, 2, 3, 4 };
int *fun(void)
{
return &a[0][0];
}
void main()
{
int *p;
p=fun();
}
Top
6 楼Riemann()回复于 2003-08-04 11:43:28 得分 0
偶的做法与huigll一样。Top
7 楼ckp(surge)回复于 2003-08-04 12:21:15 得分 0
不好意思,里面还是用了C++的代码,不过数组部分和C一致。
#include <iostream>
using namespace std;
main()
{
int a[2][2] = {1, 2, 3, 4};
int *pa=&a[0][0];
cout << *pa++ << endl;
cout << *pa++ << endl;
cout << *pa++ << endl;
cout << *pa++ << endl;
}Top
8 楼happyliyilei(莞风)回复于 2003-08-04 12:26:37 得分 0
把iostream.h 改成 stdio.h
把cout 改成用 printf就成了Top
9 楼fwinfwin(彩虹沙漠随风飘飘)回复于 2003-08-04 12:32:56 得分 0
就算二维数组的指针和普通的指针是一样的
有这必要吗?
你直接
a[5][5];
int* p;
p=a;
p就是a的指针了
只是
a[i][j]编译时就转化为*(a+5*i+j)
c数组使用的其实就是指针,数组形式只在编译时有效
Top




