Я знаю, что могу использовать имя вектора в качестве указателя. Например, если я хочу увидеть содержимое массива, используя эту технику, я могу сделать это следующим образом:
#include <stdio.h>
#define MAX 5
int main(void) {
int *p;
int a[MAX] = {1, 2, 3, 4, 5};
for(p = a; p < a + MAX; p++)
printf("%d -> (%p)\n", *p, p);
printf("\n");
return 0;
}
Я хочу сделать то же самое с двумерным вектором, используя ту же технику(поскольку двумерный вектор в C обрабатывается как одномерный вектор), и я подумал, что сделаю это так:
#include <stdio.h>
#define MAX 5
int main(void) {
int *p;
int b[MAX][MAX] = {
{1, 2, 3, 4, 5},
{6, 7, 8, 9, 10},
{11, 12, 13, 14, 15},
{16, 17, 18, 19, 20},
{21, 22, 23, 24, 25}
};
for(p = b; p < b + MAX * 2; p++)
printf("%d -> (%p)\n", *p, p);
printf("\n");
return 0;
}
, но это не работает. Я мог бы написать:
for(p = &b[0][0]; p <= &b[MAX - 1][MAX - 1]; p++)
printf("%d -> (%p)\n", *p, p);
, но я хотел бы понять, почему я не могу использовать синтаксис, подобный тому, который используется для одномерного вектора.