做数据结构作业时碰到,感觉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 太恐怖了。。
值一样,但是类型不一样。
我在想,当作函数调用参数的时候,编译器会不会检查呢。
因为当时我在调用函数的时候,给的参数是 &link,实际上应该是link, 但是编译器没报错。