c语言用一级指针引用二维数组 的地址为什么是p+i*N+j。 i*N中的*是什么意思?

如题所述

第1个回答  2015-03-17
那只是乘号追问

可以解释一下 为什么是i*N吗? 看不太懂

追答

int a[2][3]={1,2,3,
4,5,6};
a[1][2]
是指跳过1行,在跳过2个数字
1行即1*3,即i*N,2个数字即j
a是指向第一个数字
跳过i*N+j写出来就是
a+i*N+j

追问

那这个是横向跳。 那*(*(a+i)+j)这个 +i为什么是竖着加

追答

int a[5][5];
*(*(a+i)+j)

这里的a是二级指针

相当于int *a[5];
指向连续的5个数字
*(a+i) 即为一级指针 a+N*i

本回答被提问者采纳
第2个回答  2015-03-17
这个是编译器会自动选择是指针还是乘号,追问

可以解释一下为什么是p+i*N+j吗

相似回答