这样给你说吧```不要以为2维数组是2维的``其实它就是一个一维的数组``
就是有那么点点复杂而已``你还没见过更头痛的``
score[2][4]={{65,67,68,69},{45,1,2,6},{7,9,7,4}};
上面的就是一个score[3]``
score指向这3个元素score ==》score[0]
++后 ==》score[1]
++后 ==》score[2]
score[0]这个元素是什么呢?``它和一般的不一样``它有4个东西``
所以score[0] == {65,67,68,69}
同理score[1] == {45,1,2,6}
score[2] == {7,9,7,4}
所以score[0]指向 {65,67,68,69} 中的第一个元素 65
同理score[1]指向 {45,1,2,6}
中的第一个元素 45
score[2]指向 {7,9,7,4}
中的第一个元素 7
所以你可以这样去理解``
score[0]是一个我们通常理解的一个一维数组的名字比如a``它指向4个元素
所以是a[4],能理解吧``再把名字换过来就是score[0][4]```
数组名是指针``都知道``所以a是一个指针``也就是说``
score[0],score[1],score[2]都是指针``
各指向一个有4个单独元素的一维数组`
因为数组名是指针``所以score也是一个指针``
各指score[0],score[1],score[2],
score是指针``指向score[0],score[1],score[2]
而score[0],score[1],score[2]又是指针``各指向一个一维数组`
所以score是一个指向指针的指针``也就是2级指针``是一个**
所以``LZ定义的数组的名字的类型是 float**
如果传给函数``那么形式参数也应该是float**``而不是float*
顺便说下```
在看看LZ的程序``参数接受的是float*
传递的是*score``*score是什么呢``通过我上面说的``
就可以知道*score就是 score[0]
score[0]
就是一个指向 有3个元素的一维数组 即{65,67,68,69}
当然score[0]``指向这个一维数组``所以也就指向这个数组的第一个元素``
也就是65``所以*score[0]``就可以得到65``也就是说**score就是65了``
所以:
**score == 65
**(score + 1)== 45
**(score + 2)== 7
*(*score +0 + 0 )== 65
*(*score +0 +1 )== 67
*(*score +0 +2 )== 68
*(*score +0 +3 )== 69
*(*score +1 + 0 )== 45
*(*score +1 + 1 )== 1
*(*score +1 + 2 )== 2
*(*score +1 + 3 )== 6
*(*score +2 +0 )== 7
*(*score +2 +1 )== 9
*(*score +2 +2 )== 7
*(*score +2 +3 )== 4
好像大得有点多了```表达能力不强``可能说得有点模糊``
不好意思啊```