#include <stdio.h>
int main(void)
{
int x[2][3] =
{
{4, 5, 2},
{7, 6, 9}
};
int (*p)[3] = &x[1];
int (*q)[3] = x;
printf("%d %d %d\n", (*p)[0], (*p)[1], (*p)[2]); //7, 6, 9
printf("%d %d\n", *q[0], *q[1]); // 4, 7
return 0;
}
x [0] ----> [4, 5, 2].Адресация многомерных массивов и указателей
х [1] ----> [7, 6, 9]
так что если p=X[1]
, p[0]=7
, p[1]=6
и p[2]=9
, так что первый Printf понятно.
Для второго printf x
будет равен первому элементу адреса массива. Если * q [0] равно 4, то почему * q [1] 7, не должно ли оно быть 5? Он пропускает строку.
Фактическое значение от ссылки:
7 6 9 4 7
Должен ли вывод 'p' быть 7, 6 и 9, так как' p' указывает на * второй * массив в 'x'? Пожалуйста, отредактируйте вопрос, чтобы включить * фактический * вывод (скопированный и вставленный) из фактической программы, отображаемой в вопросе. –
@JoachimPileborg Я также получил это: http://ideone.com/QPp5xd – 0605002
вы правы, извините исправлено. Набрал неверный ряд, но вопрос стоит. – chefcurry7