C Tutorial/Array/Multi Dimensional Array Pointer

Материал из C\C++ эксперт
Перейти к: навигация, поиск

Declaration of outer block and inner block

<source lang="cpp">#include <stdio.h> int main(void) {

 int count1 = 1;                         
 do
 {
   int count2 = 0;                       
   ++count2;
   printf("\ncount1 = %d     count2 = %d", count1,count2);
 }while( ++count1 <= 8 );
 /* count2 no longer exists */
 printf("\ncount1 = %d\n", count1);
 return 0;

}</source>

count1 = 1     count2 = 1
     count1 = 2     count2 = 1
     count1 = 3     count2 = 1
     count1 = 4     count2 = 1
     count1 = 5     count2 = 1
     count1 = 6     count2 = 1
     count1 = 7     count2 = 1
     count1 = 8     count2 = 1
     count1 = 9

Get the values in a two-dimensional array through array pointer

<source lang="cpp">#include <stdio.h> int main(void) {

 char board[3][3] = {
                      {"1","2","3"},
                      {"4","5","6"},
                      {"7","8","9"}
                    };
 int i;
 for(i = 0; i < 9; i++)
   printf(" board: %c\n", *(*board + i));
 return 0;

}</source>

board: 1
      board: 2
      board: 3
      board: 4
      board: 5
      board: 6
      board: 7
      board: 8
      board: 9

Get values from multidimensional arrays with pointers

<source lang="cpp">#include <stdio.h> int main(void) {

 char board[3][3] = {
                      {"1","2","3"},
                      {"4","5","6"},
                      {"7","8","9"}
                    };
 char *pboard = *board;             /* A pointer to char */
 int i;
 for(i = 0; i < 9; i++)
   printf(" board: %c\n", *(pboard + i));
 return 0;

}</source>

board: 1
      board: 2
      board: 3
      board: 4
      board: 5
      board: 6
      board: 7
      board: 8
      board: 9

Two-Dimensional arrays and pointers

<source lang="cpp">#include <stdio.h> int main(void) {

 char board[3][3] = {
                      {"1","2","3"},
                      {"4","5","6"},
                      {"7","8","9"}
                    };
 printf("address of board        : %p\n", board);
 printf("address of board[0][0]  : %p\n", &board[0][0]);
 printf("but what is in board[0] : %p\n", board[0]);
 return 0;

}</source>

address of board        : 9a377
     address of board[0][0]  : 9a377
     but what is in board[0] : 9a377

Two-Dimensional arrays: pointer of pointer for its element

<source lang="cpp">#include <stdio.h> int main(void) {

 char board[3][3] = {
                      {"1","2","3"},
                      {"4","5","6"},
                      {"7","8","9"}
                    };
 printf("value of board[0][0] : %c\n", board[0][0]);
 printf("value of *board[0]   : %c\n", *board[0]);
 printf("value of **board     : %c\n", **board);
 return 0;

}</source>

value of board[0][0] : 1
     value of *board[0]   : 1
     value of **board     : 1