这里拿指向数组的指针举例:
在 C/C++ 中,指向数组起点的指针可以和 int 类型的数字直接相加或相减。这是由于指针的算术运算是根据指针所指向的数据类型进行的,而 int 类型的数字在指针运算中被视为偏移量。
当一个指针与一个整数相加时,编译器会将整数乘以指针所指向的数据类型的大小(字节大小),然后将结果与指针的地址相加,从而得到新的指针。类似地,当一个指针与一个整数相减时,编译器会进行相同的计算,但是结果会减去指针的地址,得到新的指针。
以下是一个示例代码:
#include <iostream>
int main() {
int arr[] = {1, 2, 3, 4, 5};
int* ptr = arr; // 指向数组起点的指针
// 将指针 ptr 移动 2 个元素位置,相当于 ptr 指向 arr[2]
ptr = ptr + 2;
// 输出 arr[2] 的值,结果为 3
std::cout << *ptr << std::endl;
// 将指针 ptr 移动回起点,相当于 ptr 指向 arr[0]
ptr = ptr - 2;
// 输出 arr[0] 的值,结果为 1
std::cout << *ptr << std::endl;
return 0;
}
在上述示例中,我们定义了一个整数数组 arr,并用指针 ptr 指向数组起点。然后,我们对指针 ptr 进行加法和减法运算,将其移动到数组的其他位置,以及移动回起点。通过指针的算术运算,我们可以在数组中灵活地访问不同位置的元素。
本文介绍了C/C++中指向数组的指针如何与整数进行加减运算。指针的算术运算基于所指数据类型的大小,整数作为偏移量。通过示例代码展示了如何通过指针移动访问数组的不同元素。

7617

被折叠的 条评论
为什么被折叠?



