首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

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

2012-03-17 
关于二维数组,指针的指针和堆#includestdio.hint a[2][2]int **init(){a[0][0]1a[0][1]2a[1][0]3

关于二维数组,指针的指针和堆
#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函数的返回值有问题。

热点排行