第八章——地址和指针 第四节——指针的移动

第八章——地址和指针 第四节——指针的移动

亓翎_Re-Tikara Lv5

理解

  所谓移动指针就是对指针变量加上或减去一个整数,或通过赋值运算,使指针指向相邻的存储单元。只有当指针指向一串连续的存储单元时,还可以和指向同一串连续存储单元的指针进行相减的运算,除此之外,不可以对指针进行任何其它的算术运算

  • 指针变量只能进行逻辑运算和相减的算术运算。
  • 不是指向同一数组的指针变量运算是无意义的。
  • 指针变量的值加1或减1,并不能地址加1中减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
#include <stdio.h>

int main() {
int arr[] = {1, 2, 3, 4, 5};
int *p = arr; // 指针初始化指向数组首元素

// 示例1:通过指针移动遍历数组
printf("遍历数组元素:\n");
for(int i=0; i<5; i++) {
printf("元素地址:%p,值:%d\n", p, *p);
p++; // 指针向后移动一个int类型的位置
}

// 示例2:指针相减运算
int *p1 = &arr[2];
int *p2 = &arr[4];
printf("\n两个指针相减的结果:%ld\n", p2 - p1); // 输出2(两个int指针间隔2个元素)

// 示例3:错误的指针运算
int a = 10, b = 20;
int *p3 = &a;
// 错误!不能对非数组指针执行算术运算
// p3 += 1; // 取消注释将导致未定义行为

return 0;
}
  • 标题: 第八章——地址和指针 第四节——指针的移动
  • 作者: 亓翎_Re-Tikara
  • 创建于 : 2026-02-07 02:21:28
  • 更新于 : 2026-02-10 02:48:46
  • 链接: https://re-tikara.fun/Blog/posts/b79fcdac/
  • 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。
目录
第八章——地址和指针 第四节——指针的移动