龙在天涯 <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/