when I use gdb to debug my code, I meet a problem which makes me headache, here is my code snippet:
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];
}
.....
when I tried to print out all the elements in 2-dimensional array "optBoards" by
p optBoards
I found the thing is not as easy as I thought, it gives me
$1 = 0x7fff5fbff330
looks like a memory address, then I tried
p optBoards[0][0]
I got
Cannot perform pointer math on incomplete types, try casting to a known type, or void *.
I keep trying
ptype optBoards
I saw
type = int [][0]
I wildly guess optBoards should be a pointer points to a one-dimension array, hence I tried again
p (int[][0])(*optBoards)[0]
I got a memory address again
$2 = 0x7fff5fbff330
I saw some hope and tried again
p (int[][0])*((*optBoards)[0])
now I get a big 0
$3 = 0x0
I thought I already got the value I want, later I found out after I entering the for loop, optBoards would be assign some value, but no matter what, I always got a big 0 for all the elements of optBoards. I feel lost.
what should I do to print out the correct value for this 2-dimension array?
your help would be greatly appreciated.