通过指针操作数组元素
#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;}