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