在使用期,用*p解引用,是把指针变量p的值视为某个数据(其类型由声明指针时确定)的入口地址,int* p则假定p储存的入口地址是一个int型数据的地址,CPU在取得這個地址值后,再跳转到那个地址上,提取或使用那个位置的数据,这样*p整体上就是一个int型数据变量了。正如上面有人指出的,指针引用数据,实际上多做了动作,就存取数据的效率而已,它其实不及直接寻址(即根据变量名存取数据)。指针仅用在无法直接寻址存取数据的场合,比如在堆上分配的数据,就是没有变量名的,对那部分空間上的数据,只能用指针,那才是指针的用途。很多初学者,为用指针而硬用指针,对栈上的数据也用指针,那是脱裤子放屁,效率低了不说,还浪费内存,写多了*和&,也影响可读性,是一种极坏的故弄玄虚的风气,好像专写C语言特有的代码才显本事似的,那是登堂而未入室的表现。
授人以渔,不授人以鱼。