C&C++指针的算术运算规则
·
C&C++ 指针算术运算仅支持 加减整数 和 同类型指针相减,运算结果会结合指针指向的数据类型大小自动缩放。
1. 指针加减整数
公式: p ± n 的实际偏移字节数 = n × sizeof(*p) ,目的是保证指针始终指向同类型数据的有效地址。
int arr[] = {10,20,30};
int* p = arr; // 指向 arr[0]
p++; // 等价 p += sizeof(int),指向 arr[1]
int* q = p + 1; // 指向 arr[2]
注意:不能对 void* 做算术运算( sizeof(void) 无定义),也不能让指针越界后解引用。
2. 同类型指针相减
结果是两个指针之间的 元素个数差(而非字节差),常用于计算数组中元素的相对位置。
int arr[] = {1,2,3,4,5};
int* start = arr;
int* end = &arr[4];
int num = end - start; // 结果为 4,即两个指针间隔4个int元素
注意:只有两个指针指向同一数组/同一块连续内存时,相减才有实际意义。
3. 不支持的指针运算
- 指针之间不能做加法、乘法、除法运算。
- 不同类型指针(除非强转)不能直接相减或比较
更多推荐



所有评论(0)