当我使用 gdb 调试我的代码时,我遇到了一个让我头疼的问题,这是我的代码片段:
int getMaxProfits( int *boards, int length, int consecutive )
{
int optBoards[length+3][length+3];
memset(optBoards, 0, sizeof( optBoards ) );
for( int i = length -1; i >= 0; i-- )
{
for( int j = i; j <= length - 1; j++ )
{
if( j == i )
{
optBoards[i][j] = boards[j];
}
else if( j - i < consecutive )
{
optBoards[i][j] = boards[j] + optBoards[i][j-1];
}
.....
当我试图打印出二维数组“optBoards”中的所有元素时
p optBoards
我发现事情并不像我想象的那么容易,它给了我
$1 = 0x7fff5fbff330
看起来像一个内存地址,然后我尝试了
p optBoards[0][0]
我有
Cannot perform pointer math on incomplete types, try casting to a known type, or void *.
我不断尝试
ptype optBoards
我看见
type = int [][0]
我疯狂猜测 optBoards 应该是指向一维数组的指针,因此我再次尝试
p (int[][0])(*optBoards)[0]
我又得到了一个内存地址
$2 = 0x7fff5fbff330
我看到了一些希望并再次尝试
p (int[][0])*((*optBoards)[0])
现在我得到一个大0
$3 = 0x0
我以为我已经得到了我想要的值,后来我发现进入 for 循环后,optBoards 会被分配一些值,但无论如何,我总是得到一个大 0 的 optBoards 的所有元素。我感到失落。
我应该怎么做才能打印出这个二维数组的正确值?
您的帮助将不胜感激。