通过指针操作数组元素
#include <stdio.h>int main() {    int a[] = {1, 2, 3, 4, 5, 6, 7, 8, 9};    int i = 0;    int n = sizeof(a) / sizeof(a[0]);    for (i = 0; i < n; i++) {        // * 和 [] 效果一样,都是操作指针所指向的内存        // printf("%d, ", a[i]);        printf("%d, ", *(a + i));    }    printf("\n");    // 定义一个指针变量保存a的地址    int *p = a;     for (i = 0; i < n; i++) {        // printf("%d, ", p[i]);        printf("%d, ", *(p + i));    }    printf("\n");    return 0;}
指针数组
#include <stdio.h>int main() {    // 指针数组    int *p[3];    int a = 1;    int b = 2;    int c = 3;    // 指针变量赋值    p[0] = &a;    p[1] = &b;    p[2] = &c;    for (int i = 0; i < sizeof(p) / sizeof(p[0]); i++) {        printf("%d, ", *(*(p + i)));        // printf("%d, ", *(p[i]));    }    printf("\n");    return 0;}
数组名做函数参数
#include <stdio.h>// 下面3种写法完全等价// void print_arr(int a[10], int n)// void print_arr(int a[], int n)void print_arr(int *a, int n) {    int i = 0;    for (i = 0; i < n; i++) {        printf("%d, ", a[i]);    }    printf("\n");}int main() {    int a[] = {1, 2, 3, 4, 5, 6, 7, 8, 9};    int n = sizeof(a) / sizeof(a[0]);    // 数组名做函数参数    print_arr(a, n);    return 0;}