CFD Online Discussion Forums

CFD Online Discussion Forums (https://www.cfd-online.com/Forums/)
-   Main CFD Forum (https://www.cfd-online.com/Forums/main/)
-   -   what is the meaning of the following c code (https://www.cfd-online.com/Forums/main/13424-what-meaning-following-c-code.html)

ztdep May 5, 2007 09:08

what is the meaning of the following c code
 
Hi The code are as following:

" double **matrix;

matrix = (double **) malloc (N * sizeof (double));

for (row = 0; row < N; row++)

matrix[row] = (double *) malloc (N * sizeof (double));"

i do not understand these four lines , would you please detail it. Regards

Luca May 5, 2007 09:49

Re: what is the meaning of the following c code
 
it is the usual way in C to create a 2D matrix A. you can access to its element like matlab simply requiring: A[i][j]. Luca

Dominic May 5, 2007 10:41

Re: what is the meaning of the following c code
 
Suppose you say double *A. This means A will hold the address of a variable. You will allocate memory like: A=(double *)malloc(sizeof(double)*N); and *A will give the value at the first address. Then subsequent values can be obtained by *(A+1), *(A+2), etc....

Now lets say double **A. This tells *A will hold the address of a variable. You will allocate memory like:

A = (double **)malloc(size(double)*N);

Actually u are allocating memory for N rows only. The column part hasnt been allocated yet. So For each Row of A, that loop you mentioned will allocate for all N columns:

for (row = 0; row < N; row++)

A[row] = (double *) malloc (N * sizeof (double));

The above will allocate space for N columns when row=0,1,2...N etc. So ultimately at the end you wud have allocated memory for a NxN matrix.

To find the value at the ith row and jth column of the matrix, just issue, *(*(A+i) + j).

-Dominic


ztdep May 5, 2007 11:17

Re: what is the meaning of the following c code
 
Thank you all for your excellent explaination.



All times are GMT -4. The time now is 05:24.