我看到下面的代码片段总是返回1而不是4不能真正弄清楚出错了什么
#include <stdio.h>
int main(void) {
int a[4] = {1,2,3,4};
int *p = a;
p++;
printf("%ld\n",(long int)(p-a));
return 0;
}
答案 0 :(得分:4)
这是指针算法的基础知识。当你有:
int a[4] = {0};
int *p = a;
当你执行p++
时 - 编译器会自动增加p
四个字节(如果整数大小为四)。
如果减去1,则减法也会发生相同的情况
从p
编译器将自动减去四个字节。
但似乎更准确地回答了你的问题
应用于指针类型时的-
运算符
将结果除以元素类型的大小
指针指向。