访问 B[1][1][2]的元素可以通过下面几种方式
*(B[1][1] + 2) //这种 还可以理解。
*( *( B [1] + 1) +2 ) // 晕了。。
*( * ( * ( B + 1) + 1) + 2) // 也晕了。
加了*号 数据类型是不是就不一样了啊。
追答不是,这里的B相对于一个三维指针,例如int ***B;
*( * ( * ( B + 1) + 1) + 2) 也可以用同样方法推导:
首先B[1]=*(B+1),这种可以理解吧,设C=B[1],则
B[1][1]=C[1]=*(C+1)=*(B[1]+1)=*(*(B+1)+1)
然后再看B[1][1][2],设C=B[1][1],则
C[2]=*(C+2),由于C=C=B[1][1]=*(*(B+1)+1),所以
C[2]=*(*(*(B+1)+1+2)
B[a]
*B[a]+1 这个 跟 *(B[a] +1) 一样么。
*B[a] 是不是已经代表那个元素了。。。再 +1 什么意思。。
还是 指针向下一个元素移位。
*B[a]+1 这个 跟 *(B[a] +1) 一样么。
->这能一样吗。*(B[a] +1)这个指的是B[a][1], *B[a]+1 这个是错误的。没有这么写的!
关于*(B[a] +1),你可以这么理解:
B[a]指向了a行,再加上"*(+c)",表示指向了a行中的c列,即B[a][c].
按照书上的 就是这么写的。。。。。
B[a] 是一个指针把。
*( B[a] + 1) 是一个指针么?
求教
1
2
3
4
5