Pointers and multidimensional arrays: Difference between revisions
Jump to navigation
Jump to search
(Created page with " Handling arrays and pointers. The syntax uses the c99 standard. To compile, use :> gcc -std=c99 main.c <source lang='c'> #include <stdio.h> void f(int * p,int L) { for(i...") |
(No difference)
|
Latest revision as of 17:06, 13 November 2012
Handling arrays and pointers. The syntax uses the c99 standard. To compile, use
:> gcc -std=c99 main.c
<source lang='c'>
- include <stdio.h>
void f(int * p,int L) {
for(int i=0;i<L;i++) *(p+i) = 3;
}
void g(double * p,int L) {
for(int i=0;i<L;i++) for(int j=0;j<L;j++) *(p+i*L+j) = 2.0*i+j;
}
void h(double * p,int L) {
for(int i=0;i<L;i++) for(int j=0;j<L;j++) for(int k=0;k<L;k++)
*(p+(i*L+j)*L+k) = i+j+k; }
int main() {
int L=3;
// one-dimensional array
int tab[L]; f(&tab[0],L); for(int i=0; i<L;i++) printf("%d ",tab[i]); printf("\n"); printf("\n");
// two-dimensional array
double mat[L][L]; g(&mat[0][0],L); for(int i=0; i<L;i++) for(int j=0; j<L;j++) printf("%d %d %lf\n",i,j,mat[i][j]); printf("\n");
// three-dimensional array
double tensor[L][L][L]; h(&tensor[0][0][0],L); for(int i=0; i<L;i++) for(int j=0; j<L;j++) for(int k=0; k<L;k++)
printf("%d %d %d %lf\n",i,j,k,tensor[i][j][k]);
return 0;
} </source>