Как получить доступ к содержимому 2-го массива, используя указатель на массив - PullRequest
0 голосов
/ 04 января 2012

У меня есть двумерный массив, и я хотел получить доступ к конкретному элементу этого массива, используя указатель на массив, как показано ниже

 main()
 {
  int a[][4]={{2 ,0 ,0 ,2},{41 ,0, 0, 9}};

  int (*p)[4]=a;
  printf("%d",*p[0]);
  }

Это дает мне первый элемент 1-го массива Ist, но теперь доступ ко 2-му элементу 1-го массива осуществляется с помощью указателя на массив?

Ответы [ 4 ]

1 голос
/ 04 января 2012

a[x][y] компилируется в *(a+x*4+y).

1 голос
/ 04 января 2012

Вы можете просто получить доступ к элементам ваших 2d массивов, например так:

printf("%d", a[0][1]); /* prints second item of first array */
0 голосов
/ 04 января 2012
int a[2][4]={{2 ,0 ,0 ,2},{41 ,0, 0, 9}};
int (*p)[4]=a;

for (i = 0; i < 2; i++)
    for (j = 0; j < 4; j++)
        printf("%d\n", p[i][j]);

Вы можете получить доступ к элементам массива с помощью p, как если бы это было a.Причина этого в том, что когда вы используете имя a в контексте значения, его тип уже равен int (*)[4], поэтому тот же тип, что и у p.

Обратите внимание, что форма p[i][j] в Cэквивалентно *(*p + i) + j).

0 голосов
/ 04 января 2012

Доступ к элементам осуществляется с использованием соответствующих номеров строк и столбцов.

Если вам нужно получить доступ ко второму элементу первой строки в двумерном массиве, упомянутом выше, тогда вы можете использовать

Е ( "% d", а [2] [1]);

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...