C++二维数组做函数参数的有关问题
C++二维数组做函数参数的问题
二维数组做函数参数的问题
四条语句
前两条是定义的数组,一个一维,一个二维
然后第三条初始化二维数组
现在监视窗里是调用fitmess函数前的二维矩阵的值
然后按一下F11,单步执行
数组的值变成一维了,而且是刚才监视窗里的第一行数据
求解答,怎么回事啊

------解决思路----------------------
看fitness()的函式聲明
不是和你說了嗎?二維數組存放的是「指向一維數組的指針」。
那麼 (*codestring) 獲得的就是二維數組中存放的「指向第一個一維數組的指針」。
「指向一維數組的指針」和「類型是一維數組的變量」是等效的,所以傳的是「二維數組中的第一個一維數組」的指針。
但是你依然可以將它視為二維數組來處理,因為傳過去的類型是int[M+M]*。
Tip.用Vs監視Cpp程式,你最好留意下监视窗的最後一項「類型」。
二维数组做函数参数的问题
四条语句
前两条是定义的数组,一个一维,一个二维
然后第三条初始化二维数组
现在监视窗里是调用fitmess函数前的二维矩阵的值
然后按一下F11,单步执行
数组的值变成一维了,而且是刚才监视窗里的第一行数据
求解答,怎么回事啊
------解决思路----------------------
看fitness()的函式聲明
int fitness(int (*codestring)[M+M],Graph (*taskstate)[10],float cost[M][P],int t[P],int fitime[P])
不是和你說了嗎?二維數組存放的是「指向一維數組的指針」。
那麼 (*codestring) 獲得的就是二維數組中存放的「指向第一個一維數組的指針」。
「指向一維數組的指針」和「類型是一維數組的變量」是等效的,所以傳的是「二維數組中的第一個一維數組」的指針。
但是你依然可以將它視為二維數組來處理,因為傳過去的類型是int[M+M]*。
Tip.用Vs監視Cpp程式,你最好留意下监视窗的最後一項「類型」。