指针访问数据,有两个对象,一个是数据本身,是必须先存在的,另一个是指针,用于指向数据,故用指针的程序,实际上占用更多的内存。指针犹如一个指示棒(本来指针的英文单词pointer就是教师用的棒子),要指向某个东西,首先那个东西必须存在,另外,棒子与被指向的东西是两回事,不能等同。很多新手,总是以为声明了一个指针,就可以当数据用,比如int* x之后,就以为*p是一个int数据,写出*p = 1这类代码,殊不知此时p所指向的对象不存在,*p也就无从解引用,此时赋值,当然程序崩溃。为了使用指针,必须先声明int y,即有了数据对象,可以被指向,然后再使用一个指针变量(用了两份变量)去指向它,即int* x = &y,这样两个步骤之后,才可以用*x = 1赋值,这样等价于y = 1,实际上是脱裤子放屁,很简单的直接y = 1不用,偏要用两个变量做同一件事,直接访问变成间接访问,效率反而低了,逻辑也绕圈圈了,清晰明白的变成故弄玄虚了,却有人总爱做这样的题目,自以为在学用指针。指针不是那么用的,该在什么场合下用,见上一楼。原则无非是两个:一,只有在无法用y变量名访问空间的时候,才用指针;二,能够不用指针,就尽量不用指针。
授人以渔,不授人以鱼。