[juliantec_list] Re: Re: Re: 关于二纬数组名类型是否是二纬指针的问题(二纬数组的本质)

  • From: "Yihe Chen" <yihect@xxxxxxxxxxxxxx>
  • To: "hechengwang321" <hechengwang321@xxxxxxx>
  • Date: Tue, 17 Jul 2012 10:16:31 +0800

龙在天涯 <hechengwang321@xxxxxxx> posted:

你可以这样来提领:

 char ca[][7] = {"hello","world"};
 char (*pa)[7] = ca;
 printf("%c\n", (*pa)[1]);
 printf("%s\n", pa+1);


 数组里的元素提领时明明用了两颗* 。

两颗星?怎么用的,贴上代码来看看。
比如说s[0][0]  对于他的提领不就是**s么,即*(*(s+0) +0)么


这两个 * 造成的结果是不一样的,*(s+0) 返回的是二纬数组里面的
第零个数组,这个在后面可以当成是一个数组名来使用。

所以,你说的 *(*(s+0)+0) ,是将 *(s+0) 的部分作为数组名来加上
0后对它进行再一次提领,这就像我定义一个 int a[4], 然后我可以
通过 *(a+3) 访问到最后一个 int 类型的元素, 这里的 a 实际上是
一个 int * 的地址常量。

前面的 *(s+0) 是数组名,也算是一个地址常量。







Learning, Just As Your Favourite Thing!

Maillist, See http://www.juliantec.info/mlist/mail-lists.html
JulBlog, See http://www.juliantec.info/julblog/summary.php
JulWiki, See http://www.juliantec.info/wiki/
JulJob, see http://www.juliantec.info/juljob/



Other related posts: