指针是C语言中一个特殊的变量,它里面存储的数值被解释成为内存里的一个地址。打个比方例如你要找一个叫做
张飞的人,如果你知道他的具体住址,住在什么大街什么号,那么就可以通过访问这个地址来找到对应的人了,指针就好比这个住址门牌号码。 它用一个*号代表,例如:int *p;定义了一个指向整型变量的指针p,而*p就是取值,把p所指向的地址空间里面的内容取出来。
利用指针变量可以表示各种
数据结构;能很方便地使用数组和
字符串;并能象
汇编语言一样处理内存地址,从而编出精练而高效的程序。比如说和结构体的结合使用。使得文件操作以及
链表的应用更加方便。但是刚开始学的话也容易出错,比如说在与函数结合的时候。在学习指针中除了要正确理解基本概念,还必须要多编程,上机调试。只要作到这些,指针也是不难掌握的。
你举的例子就是关于指针和数组的关系,在C语言中,数组的数组名就是数组存放在内存中的首地址,知道了这个a[0]和*&a[0]等价,a[i]和*(a+i)等价就好理解了。a[0]就是a数组中下标为0号的单元存储的内容,而&a[0]就是取a[0]的内存地址,加上*,就是取a[0]的内存地址里存放的值。a[i]就是a数组中下标为i号的单元存储的内容,a+i代表的是数组首地址加上i,指向数组第i个元素的存放内存地址,而加上*,就是取数组第i个元素得值,等价于a[i]。
这里有一个关于指针的文章,讲的很深入,感兴趣的话可以研究一下:
http://zhidao.baidu.com/question/155815675.html