int a=10;
int *pofa=&a;
pofa=pofa+1;
问题就是pofa的值是不是pofa的值加一呢?很明显,pofa是一个指针变量,它指向整形变量a的地址,那么pofa到底是多少呢?答案是a的地址在加上4,因为a是整形的,在C++中是四个字节,所以,执行pofa=pofa+1;pofa比然来的值增加了4而不是一。以下是我的测试:
运行输出的结果是:
那么如果把pofa=pofa+1;这条语句改为pofa++;呢?答案是一样的!
问题完了没?看看下面的程序
if语句中的那条打印语句会执行不?答案是会执行的,看执行结果
由此,可以说明一个道理,指针的加减不是普通的加减算法,也就是说在其执行加法的时候必定存在着一种转换,这种转换是什么?我
大胆的猜想,指针的加法是这么实现的,pofa++或这pofa=pofa+1;会转换为pofa=pofa+sizeof(*pofa)*1;通过求指针指向变量的那个类型所占的字节数在乘指针偏移单位,然后做加法,不知道这么所对不对,希望大牛们指正。