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 |
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
|
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 |
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. |