最后更新于:2026年3月11日 下午
第1讲:指针基础
🔑 知识点讲解
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
| 指针是存放地址的变量。
声明: int a = 10; int *p = &a; 操作符: & -> 取地址运算符 * -> 解引用运算符(取指针指向的值) *p = 20;
指针与数组: int a[5] = {1,2,3,4,5}; int *p = a; *(p+2) == a[2]
指针作为函数参数(地址传递): void swap(int *a, int *b) { int temp = *a; *a = *b; *b = temp; } 调用: swap(&x, &y);
指针的大小: 32位系统:4字节 64位系统:8字节(与指向的类型无关)
|
✏️ 练习:用指针实现数组求最大最小值
题目:输入 n 个整数,用指针方式遍历数组,求最大值和最小值,通过指针参数返回。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
| #include <stdio.h>
void findMinMax(int *arr, int n, int *max, int *min) { *max = arr[0]; *min = arr[0]; for (int i = 1; i < n; i++) { if (*(arr + i) > *max) *max = *(arr + i); if (*(arr + i) < *min) *min = *(arr + i); } }
int main() { int n; scanf("%d", &n); int a[100]; for (int i = 0; i < n; i++) scanf("%d", &a[i]); int max, min; findMinMax(a, n, &max, &min); printf("最大值: %d\n最小值: %d\n", max, min); return 0; }
|