C里面函数都只能返回一个值,如果你的函数要返回两个值,那就要用指针了,把变量地址传进函数,然后把希望通过函数操作后想要的值存进传进来的变量地址里面。当然函数可以返回数组,结构体,但是你看多了你就知道,没有人会这么做的,都返回指针。试想如果我有一个1万个元素的数组,你会把它整个地传进一个函数里面或者整个地返回出来吗?C语言里面都是传值的,就是说传进函数的参数值首先被复制一边赋值给形式参数,你想想1万个元素,够呛咯!但是有指针就好多了,我们可以把指针(数组的第一个元素的地址)传进函数里面,有了开始地址,函数就知道东西在哪儿,就直接去那儿操作就可以了。单凭这一点,你就可以知道指针的威力,当然你也知道了指针一个很大的用处就是用于函数之间参数的传递与返回。指针就相当于一个代理一样,通过代理你知道了你要的东西在哪儿,你去那个地方就可以了,而不是需要把东西整个地板到你面前。
指针,说白了就是储存数据内存段的地址。打个比方说,你家的门牌号是306,那么你家中回来一些客人,这些客人就相当是一些变量,而门牌号就说明了地址,如果张三在你家,另一个人要找到他,那么此时我们只需要告诉那人306,就相当于你访问一个变量时,曲线救国,不直接访问变量的值,而去访问变量的地址,这会带来很多方便。由于c语言是一种比较低级的语言,所以包括了许多对硬件操作的部分,直接对内存进行操作会带来很多方便。
当指针是一个简单元素的地址时,当然没必要向你题中那样表示,直接把0赋值给a。但是当数据元素不再是简单类型的,而是结构体,联合体之类的,那么指针就大有用处,指针表示的是一个复杂元素的地址,这个地址内可以既有数据,又有下一个元素的地址。或者在邻接表里面,一个数据元素的指针更不是那么简单
而且用指针访问数组特别是二维数组比较方便。
好奇怪的问题,指针提供了我们直接对机器内存空间的操作的方法,这也是C为什么被称为高级语言里的汇编语言的原因。
我们和机器的交互,实际上就是对机器的状态、控制寄存器读写的过程,那么你说拥有对内存空间的直接操作的方法,我们能干什么?我们对函数的调用,对数据的读写,也不过是指令+内存空间里的代码或者数据,那么指针有什么用?
指针乃C之灵魂,不会用指针的人,没有必要用C。
c的函数参数传递规则是传值,所以无论你对传入函数的行参如何改变,函数返回,输入函数的参数原来是什么就还是什么,用指针间接访问,使得参数的传递变为传址,就可以对这个参数进行改变.
大概的意思就是这样的,当然指针决不只这一点用途,作用太大了,你还是要好好学学的