C++ 从整数中减去指针 int*p=新的int; INTA=10; cout
就指针算法而言,指针并不等同于“表示某个地址的整数”。即使是添加也不是那么简单:C++ 从整数中减去指针 int*p=新的int; INTA=10; cout,c++,pointers,subtraction,pointer-arithmetic,C++,Pointers,Subtraction,Pointer Arithmetic,就指针算法而言,指针并不等同于“表示某个地址的整数”。即使是添加也不是那么简单: 不能将指针添加到指针 写入p+1并不意味着“从p变量中获取地址值并将其增加1”。实际地址增量量取决于所指变量的大小,因此递增int64\u t*p将给出与递增int8\u t*p不同的结果 为什么指针的加法和减法会有这种“奇怪的行为”?简单的答案:因为它在C++标准中定义了: 5.7加法运算符 对于加法,两个操作数都应具有算术或非范围枚举类型,或者一个操作数应为 指向完全定义的对象类型的指针,另一个应具有 整型
- 不能将指针添加到指针
- 写入
并不意味着“从p变量中获取地址值并将其增加1”。实际地址增量量取决于所指变量的大小,因此递增p+1
将给出与递增int64\u t*p
不同的结果int8\u t*p
p
指向数组中的某个元素,p+1
指向下一个元素,p-1
指向上一个元素,p1-p2
显示p1和p2之间的元素数。在这些术语中,p1+p2
没有任何意义,与1-p
相同,因此它们被视为语法错误
int *p = new int;
int a = 10;
cout << a+p;
cout << a-p;