二维指针,就是说第一维是指针,第二维还是指针;
拿*(*(a+i)+j)来说:a是数组的首地址吧,然后+i,就是说a地址向后偏移i位。就是a+i的地址了,注意,这里a+i只是地址,用*符号取出该地址的数据,就是*(a+i),这里*(a+i)就是第一维指针,它指的是地址,不是数据。
而且后面的*(a+i)+j就是说以*(a+i)为首地址,偏移j位,然后使用*取内容,这里就是第二维了,取到的数据就是实际数据了
首先你得知道a就是数组第一个元素的地址,而二维数组a[i][j]可以理解为a[i]数组每个元素储存的是一个j个元素大小的另一个数组,这样理解的话,先说*(*(a+i)+j),a+i就不说了相当于被重载操作符一样,指针+1的含义就是加一个单位的数据大小,然后*(a+i)则相当于a[i]的值对吧,而a[i]的值就是下一个数组的指针现在源代码相当于*(a[i]+j),然后自己分析吧,很简单的,不过说实话没必要真么纠结,真写代码没多少人闲的蛋疼真么写的,给自己制造麻烦不说,后期维护也会很痛苦的