C语言指针可以相加吗?为什么?
两个指针是不能相加的。仍以街道地址的比喻为例,假设你住在湖滨大道1332号,你的邻居住在湖滨大道1364号,那么1332+1364指的是什么呢?其结果是一个毫无意义的数字。如果你的C程序试图将两个指针相加,编译程序就会发出警告。
当你试图将一个指针和另外两个指针的差值相加的时候,你很可能会误将其中的两个指针相加,例如,你很可能会使用下述语句:
p=p+p2-p1;
上述语句是不正确的,因为它和下述语句完全相同:
p=(p+p2)-p1;
正确的语句应该是:
p=p+(p2-p1);
对此例来说,使用下述语句更好:
p+=p2-p1;
当你试图将一个指针和另外两个指针的差值相加的时候,你很可能会误将其中的两个指针相加,例如,你很可能会使用下述语句:
p=p+p2-p1;
上述语句是不正确的,因为它和下述语句完全相同:
p=(p+p2)-p1;
正确的语句应该是:
p=p+(p2-p1);
对此例来说,使用下述语句更好:
p+=p2-p1;