C下二级数组指针的使用

做数据结构作业时碰到,感觉2级数组指针不太好,但是想不出替代的办法[ – – 用指针习惯了。。],

例如有 Link[3][3] 时, 

结构为 

00 01 02  <- link = link[0]  = link[0][0]

10 11 12  <- link[1] = link[1][0] = *(link[1])

20 21 22  <- link[2] = link[2][0] = *(link[2])

 

我们在函数原型里面定义  Check_Link( int (* links)[3] )

这里的 links 是一个指针, 指向跨度为3个int的区域,比如 links+1 = links[1] 实际是 10 11 12

然后再次寻址,会指向跨度为1个int 的区域,如 *( links[1] + 1 ) 为位置 11

这里有一个有意思的地方,如果 int link[3][3]  那么其实 link = &link …. 这是我无意写错发现的。。

随后想到  link ?= &&link 太恐怖了。。

此条目发表在C, 编程分类目录,贴了标签。将固定链接加入收藏夹。

C下二级数组指针的使用》有2条回应

  1. felix021说:

    值一样,但是类型不一样。

  2. admin说:

    我在想,当作函数调用参数的时候,编译器会不会检查呢。
    因为当时我在调用函数的时候,给的参数是 &link,实际上应该是link, 但是编译器没报错。

发表评论

邮箱地址不会被公开。 必填项已用*标注