C语言菜鸟教程:数组指针

基本用法

示例代码:

#include <stdio.h>

// 打印二维数组
void printArr2(int arr2[2][2]) {
    for (int i = 0; i < 2; ++i) {
        for (int j = 0; j < 2; ++j) {
            printf("%d ", arr2[i][j]);
        }
        printf("\n");
    }
    printf("======\n");
}

int main() {
    int arr[2][2] = {1, 2, 3, 4};
    printArr2(arr);

    // 定义数组指针
    // 这里的p表示的是一个二维数组
    int (*p)[2] = arr;
    printArr2(p);

    return 0;
}

输出:

1 2
3 4
======
1 2
3 4
======

通过数组指针将二维数组转换为一维数组

示例代码:

#include <stdio.h>

// 打印二维数组
void printArr2(int arr2[2][2]) {
    for (int i = 0; i < 2; ++i) {
        for (int j = 0; j < 2; ++j) {
            printf("%d ", arr2[i][j]);
        }
        printf("\n");
    }
    printf("======\n");
}

// 打印一维数组
void printArr(int arr[4]) {
    for (int i = 0; i < 4; ++i) {
        printf("%d ", arr[i]);
    }
    printf("\n======\n");
}

int main() {
    int arr[2][2] = {1, 2, 3, 4};
    printArr2(arr);

    // 通过数组指针将二维数组装换为一维数组
    int *pa = (int *) arr;
    printArr(pa);

    return 0;
}

输出:

1 2
3 4
======
1 2 3 4
======

优化一维数组打印方法

示例代码:

#include <stdio.h>

// 打印二维数组
void printArr2(int arr2[2][2]) {
    for (int i = 0; i < 2; ++i) {
        for (int j = 0; j < 2; ++j) {
            printf("%d ", arr2[i][j]);
        }
        printf("\n");
    }
    printf("======\n");
}

// 打印一维数组
// 优化1:将参数转换为指针类型
// 优化2:传入数组长度
void printArr(int *arr, int size) {
    for (int i = 0; i < size; ++i) {
        printf("%d ", arr[i]);
    }
    printf("\n======\n");
}

int main() {
    int arr[2][2] = {1, 2, 3, 4};
    printArr2(arr);

    // 通过数组指针将二维数组装换为一维数组
    int *pa = (int *) arr;
    printArr(pa, 4);

    return 0;
}

输出:

1 2
3 4
======
1 2 3 4
======

自动计算二维数组的总元素个数

示例代码:

#include <stdio.h>

// 打印二维数组
void printArr2(int arr2[2][2]) {
    for (int i = 0; i < 2; ++i) {
        for (int j = 0; j < 2; ++j) {
            printf("%d ", arr2[i][j]);
        }
        printf("\n");
    }
    printf("======\n");
}

// 打印一维数组
// 优化1:将参数转换为指针类型
// 优化2:传入数组长度
void printArr(int *arr, int size) {
    for (int i = 0; i < size; ++i) {
        printf("%d ", arr[i]);
    }
    printf("\n======\n");
}

int main() {
    int arr[2][2] = {1, 2, 3, 4};
    int size = (sizeof(arr) / sizeof(arr[0])) * (sizeof(arr[0]) / sizeof(arr[0][0]));
    printf("二维数组的总元素个数:%d\n", size);
    printArr2(arr);

    // 通过数组指针将二维数组装换为一维数组
    int *pa = (int *) arr;
    printArr(pa, size);

    return 0;
}

输出:

二维数组的总元素个数:4
1 2
3 4
======
1 2 3 4
======
THE END