读书人

关于二维数组指针的指针和堆解决方案

发布时间: 2012-03-17 19:06:27 作者: rapoo

关于二维数组,指针的指针和堆
#include<stdio.h>
int a[2][2];
int **init()
{
a[0][0]=1;
a[0][1]=2;
a[1][0]=3;
a[1][1]=4;
return a;
}
int main()
{
int **temp=init();
printf("%d\n",a[0][1]);
return 0;
}
各位大侠能否告诉这个程序错在哪里啊,我用GCC编译,告诉内存错误,在打印a[0][1]的时候,我的一个朋友告诉我,对指针的指针取值,只能在堆上进行,我这里是数组,是在栈里,所以错误,不知道大侠们有什么见解?

[解决办法]

C/C++ code
#include<stdio.h>int a[2][2];typedef int (*ARRAY)[2]; //注意int** 和int (*)[2]的区别ARRAY init(){  a[0][0]=1;  a[0][1]=2;  a[1][0]=3;  a[1][1]=4;  return a;}int main(){  int (*temp)[2] = init();  printf("%d\n",a[0][1]);  return 0;}
[解决办法]
a[2][2] 和 int** 并不等价
函数的返回值不能是数组

基于上面两个情况,应该是init函数的返回值有问题。

读书人网 >C语言

热点推荐