#include <stdio.h>
#include <stdlib.h>
void display(int*, int size);
void display2DArray(int (*)[5], int nrow);
void display2DArrayUnknownSize(int *, int, int);
void display3DArray(int (*)[2][5], int);
int main(int agrs, char **argv)
{
int arr[5] = {1,2,3,4,5};
int (*j)[5] = &arr; // pointer to the entire array
printf("%d\n", sizeof(j));
printf("%d %d\n", &arr, &arr + 1);
printf("***************X test for 2D Array X******************\n");
int matrix[2][5] = {{1,2,3,4,5}, {6,7,8,9,0}};
int (* pm)[2][5] = &matrix; // pointer to the entire 2D array
printf("&matrix: %d, matrix: %d\n", sizeof(&matrix), sizeof(matrix));
printf("%d %d\n", pm, pm + 1);
int *a = *matrix;
printf("%d\n", (a + 1)[1]);
display2DArray(matrix, 2);
display2DArrayUnknownSize(*matrix, 2, 5);
printf("****** test for 3D Array ******\n");
int arr3D[2][2][5] = {{{1,2,3,4,5},{6,7,8,9,0}}, {{11,22,33,44,55},{6,7,8,9,0}}};
display3DArray(arr3D, 2);
int (*p3)[2][2][5] = &arr3D; // pointer to the entire 3D array
int (* p2)[2][5] = *p3; // pointer to the first element of the 3D array
int (* p1)[5] = *p2; // pointer to the first element of the first element of the 3D array
int *p0 = *p1; // pointer to the first element of the first element of the first element of the 3D array
printf("%d %d %d\n", &p3, p3, p3 + 1);
printf("%d %d %d\n", &p2, p2, p2 + 1);
printf("%d %d %d\n", &p1, p1, p1 + 1);
printf("%d %d %d\n", &p0, p0, p0 + 1);
return 0;
}
void display3DArray(int (* p)[2][5], int nrow) {
for (int i = 0; i < nrow; i++) {
for (int j = 0; j < 2; j++) {
putchar('{');
for (int k = 0; k < 5; k++) {
printf("%d ", *(*(*(p + i) + j) + k));
}
printf("} ");
}
putchar('\n');
}
}
void display2DArrayUnknownSize(int *p, int nrow, int ncol) {
for (int i = 0; i < nrow; i++) {
for (int j = 0; j < ncol; j++) {
printf("%d ", *(p + i * ncol + j));
}
putchar('\n');
}
}
void display2DArray(int a[][5], int nrow) {
for (int i = 0; i < nrow; i++) {
for (int j = 0; j < 5; j++ ) {
printf("%d ", *(*(a + i) + j));
}
putchar('\n');
}
}
void display(int *arr, int size) {
for (int i = 0; i < size; i++) {
printf("%d\n", *arr++);
}
}
Something about C pointers and arrays
最新推荐文章于 2022-02-25 21:57:21 发布