指针基础

最后更新于: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 存储 a 的地址

操作符:
& -> 取地址运算符
* -> 解引用运算符(取指针指向的值)

*p = 20; // 通过指针修改 a 的值,现在 a = 20

指针与数组:
int a[5] = {1,2,3,4,5};
int *p = a; // p 指向 a[0]
*(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;
}

指针基础
https://xtanguser.github.io/2026/03/10/指针基础/
作者
小唐
发布于
2026年3月10日
许可协议