C++二维数组做函数参数的有关问题

C++二维数组做函数参数的问题
二维数组做函数参数的问题



C++二维数组做函数参数的有关问题



四条语句




前两条是定义的数组,一个一维,一个二维







然后第三条初始化二维数组




现在监视窗里是调用fitmess函数前的二维矩阵的值




然后按一下F11,单步执行




数组的值变成一维了,而且是刚才监视窗里的第一行数据




求解答,怎么回事啊



C++二维数组做函数参数的有关问题


------解决思路----------------------
引用:
为什么执行函数的时候,监视窗里的二维数组变成了二维数组的第一行内容啊,求详细


看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程式,你最好留意下监视窗的最後一項「類型」。