1.指针的应用场景
指针应用场景一:交换两个变量的值.
我们之前尝试通过传值的方式来构建一个swap函数,发现失败了,因为我们在函数内确实实现了交换,但离开了函数就失效了.现在我们通过指针重新构建一个swap函数出来:
在swap里面,我们要的参数是两个指针,然后我们在里面所有的运算都是用*来做的.
指针应用场景二:
我们再来看个例子:
这个函数用来找出一个数组里面最大和最小的变量.而这两个变量的值我们不可能通过返回值来返回,返回值只能返回一个,所以我们用两个指针来做这件事情.
运行结果:
指针应用场景二b:
我们来做一下这件事情:
如果b是0,那么我们返回ret=0不进入if,如果b不是0,那么ret=1,我们计算a/b的结果后通过指针result访问修改c的值,再返回ret=1,进入if并打印结果.
在c语言我们只能通过这种方式来,而在后续的语言如java和c++采用了异常机制来解决这个问题.
2.指针最常见的错误
如:int *p; *p=16;这样是不合法的.我们知道,本地变量都不会默认赋初始值,所以p里面是一些乱七八糟的东西,比如ab23,于是如果把它当作地址的话,他可能会指向一个莫名其妙的地方,因此你说*p=16,他就会试图往那个地方写入16,而那个地方如果碰巧是一个不能写的地方,你的程序就会立刻崩溃.所以任何一个地址变量在没有被赋值之前,没有得到任何实际的变量的地址之前,你不能通过它用*去访问任何的变量,那都是没有任何意义的.