当前位置: 代码迷 >> C语言 >> [求助]指针与二维数组的问题(已解决)
  详细解决方案

[求助]指针与二维数组的问题(已解决)

热度:151   发布时间:2008-03-24 18:31:47.0
[求助]指针与二维数组的问题(已解决)
在我的书上是这样写的:
  int arr[2][3]
  因为数组名可以直接当成指针常量来操作,二维数组就可以看成是一种双重指针的应用.例如 *(arr+0) 是表示数组
  中第一维维度0的第一个元素的内存地址,也就是 arr[0][0] ,依次类推.
我的程序是用Dev-C++ 4.9.9.2,是这样编的:
#include <stdio.h>
#include <stdlib.h>

int main()
{
  int arr[2][3]={{10,20,30},
                 {40,50,60}};

  puts("---------------------");
  puts("数组与指针的应用\t");
  printf("arr[%d][%d]= %d\n",0,0,*(arr+0));
  puts("---------------------");

  system("pause");
  return 0;
}

但是输出的结果却不是10,而是:

结果是2293584,怎么回事,请帮忙,谢谢!!

[[it] 本帖最后由 r251314w 于 2008-4-6 15:55 编辑 [/it]]
搜索更多相关的解决方案: arr  指针  内存  int  

----------------解决方案--------------------------------------------------------
printf("arr[%d][%d]= %d\n",0,0,*(arr+0));这样输出的是地址的十进制值
改成
printf("arr[%d][%d]= %d\n",0,0,**(arr+0));
----------------解决方案--------------------------------------------------------
*(*arr+0)
----------------解决方案--------------------------------------------------------
like this!
*arr==*(arr+0)==arr[0]
*arr[0]==*(*(arr+0))==**arr==arr[0][0]


你上面的,只是指向第一个元素的指针,这个一般是一个LONG类型的整数

[[it] 本帖最后由 hyq1122 于 2008-3-25 00:04 编辑 [/it]]
----------------解决方案--------------------------------------------------------
谢了,我后来仔细思考才想起来
----------------解决方案--------------------------------------------------------
  相关解决方案