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

新手请问关于数组指针的有关问题

2012-06-25 
新手请教关于数组指针的问题比如我声明一个二维数组char board[3][3]{{1,2,3},{4,5,6},{7,

新手请教关于数组指针的问题
比如我声明一个二维数组
char board[3][3]={
  {'1','2','3'},
  {'4','5','6'},
  {'7','8','9'}

  };

如果再声明char*p=board的话,board应该是board[0][0],也就是'1'的地址吧,因为printf("%c",*p)的结果显示是1。

可是printf("%c",*board[0])显示也是1,printf("%c",**board)也是1。

不声明指针直接写*board[0]或者**board这行吗?

board是数组第一个元素的地址,也就是board[0]的地址,而board[0]的地址又是里面元素'1'的地址,所以board就是'1'的地址,应该是这么理解吧?

那如果board是'1'的地址的话,为什么不能直接写*board呢?

而*board[0]这怎么理解?是理解成(*board)[0]还是*(board[0])?

求指点,多谢

[解决办法]
建议楼主这样去理解,二维数组就是由一维数组组成的,如board[0]就是board的第一个元素,也就是一个一维数组,一个元素是一个数组,当然存放的是指向这个数组的地址(首地址)。
对一个一维数组array,*array指的是array[0];对于二维数组也是如此,所以*board 就是board[0];
上面说了board[0]的值是个地址,当然就不能用他来输出'1'了。
既然board[0]的值是个地址,用*就可以得到该地址处存放的内容了
 所以*board[0] == '1',故**board == '1';

热点排行