So I'm in the need to translate a C library to pure java, so far its looking good, but I'm stuck here.
Can someone explain to me what does the following pointer is for?
double *DTimeSigBuf[MAX_TIME_CHANNELS];
Ok I know it is a double type pointer named DTimeSigBuf, but whats that in the brackets? also MAX_TIME_CHANNELS is defined in the h file as:
#define MAX_TIME_CHANNELS 2
then in the code this constant value changes, like its pointing somewhere else, but I dont know what does exactly means. is it equivalent to say:
double *DTimeSigBuf = MAX_TIME_CHANNELS;
if I recall well there was something similar in assembler, like: mov [BX], CL
called Indirect addressing mode register, does this have anything to do with this? I know I might be completly lost! because as the title says, I'm a java programmer.
And the other question, what is the effect of doing this:
DTimeSigBuf[chanNum] = (double*)malloc(block_size_samples*sizeof(double));
Where block_size_samples is int and chanNum is an for iterator variable?
Please help! I sware I've been googling the whole time.
Thanks folks :)
It is an array of pointers to double. MAX_TIME_CHANNELS is size of the array.
The effect of the statement with malloc is allocation of a block of memory large enough for block_size_samples double values; address of the block of memory is then assigned to chanNum element of the DTimeSigBuf array.
DTimeSigBuf
is an array of pointers to type double
. This could be thought of as an array of arrays of type double
.
double *DTimeSigBuf[MAX_TIME_CHANNELS];
could be thought of as
double DTimeSigBuf[MAX_TIME_CHANNELS][]
The line
DTimeSigBuf[chanNum] = (double*)malloc(block_size_samples*sizeof(double));
is allocating memory for block_size_samples
number of variables of type double
to be placed in the array pointed at by DTimeSigBuf[chanNum]
.
For example:
If block_size_samples
is 4
and chanNum
is 1
, you could think of it this way:
DTimeSigBuf[1] = new double[4];
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With