天天看點

c語言中指針,二維數組,一維數組,指針數組,二級指針,應用

#include <stdio.h>

int main(void)

{

int a[3][4] = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}};

int i, j;

int *b[3] = {a[0], a[1], a[2]};//定義一個指針數組,裡面從放二維數組的3個首位址三個首位址即使

int (*p)[4] = a;

// int *q = a[0];

// int *q = &a[0][0];

// int *q = *a;

int *q = (int *)a;

int **k = &q;

int **n = b;

printf(">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>1\n");

for(i=0; i<sizeof(a)/sizeof(a[0]); i++)

{

for(j=0; j<sizeof(a[0])/sizeof(a[0][0]); j++)

{

printf("%d ", a[i][j]);//下标法取數組元素的值。

}

}

printf("\n");

printf(">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>2\n");

for(i=0; i<sizeof(a)/sizeof(a[0][0]); i++)

{

printf("%d ", *(*a+i));

}

printf("\n");

printf(">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>3\n");

for(i=0; i<sizeof(a)/sizeof(a[0][0]); i++)

{

printf("%d ", *(a[0]+i));

}

printf("\n");

printf(">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>4\n");

for(i=0; i<sizeof(a)/sizeof(a[0][0]); i++)

{

printf("%d ", *(&a[0][0]+i));

}

printf("\n");

printf(">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>5\n");

for(i=0; i<sizeof(a)/sizeof(a[0][0]); i++)

{

printf("%d ", *((int *)a+i));

}

printf("\n");

printf(">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>6\n");

for(i=0; i<sizeof(a)/sizeof(a[0]); i++)

{

for(j=0; j<sizeof(a[0])/sizeof(a[0][0]); j++)

{

printf("%d ", *(b[i]+j));

}

}

printf("\n");

printf(">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>7\n");

for(i=0; i<sizeof(a)/sizeof(a[0][0]); i++)

{

printf("%d ", *(*p+i));

}

printf("\n");

printf(">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>8\n");

for(i=0; i<sizeof(a)/sizeof(a[0]); i++)

{

for(j=0; j<sizeof(a[0])/sizeof(a[0][0]); j++)

{

printf("%d ", *(*p+j));

}

p++;

}

printf("\n");

p = a;

printf(">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>9\n");

for(i=0; i<sizeof(a)/sizeof(a[0][0]); i++)

{

printf("%d ", *((int *)p+i));

}

printf("\n");

printf(">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>10\n");

for(i=0; i<sizeof(a)/sizeof(a[0][0]); i++)

{

printf("%d ", *(q+i));

}

printf("\n");

printf(">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>11\n");

for(i=0; i<sizeof(a)/sizeof(a[0][0]); i++)

{

printf("%d ", *(*k+i));

}

printf("\n");

printf(">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>12\n");

for(i=0; i<sizeof(a)/sizeof(a[0]); i++)

{

for(j=0; j<sizeof(a[0])/sizeof(a[0][0]); j++)

{

printf("%d ", *(*n+j));

}

n++;

}

printf("\n");

return 0;

c語言中指針,二維數組,一維數組,指針數組,二級指針,應用

以上代碼是華清遠見牛立兵老師操作

繼續閱讀