数据结构-指针
若想改变一个变量的值,一开始肯定就直接想到给他赋予一个新值:
此时的i的值却并未发生变化,由于形参和实参虽然变量名都一样,但分配的内存单元却不同,因此修改形参的值并不会影响到实参,因此我们可以考虑到使用指针。
若想改变整型变量的值,则将其地址作为形参传入函数中:
此时将i的地址传入函数,则相当于z=&i,而 * z就相当于是i的值,此时的形参就是i的地址,就锁定了实参中的i,改变*z就是改变i值。而当想进一步改变p的值呢,若仍将&p传入f()函数中会发生什么呢?
此时出现提示:实参与形参类型不兼容,由于p已经是一个指针了,又要取p的地址作为形参,这时可以将&想象成增加一个维度而 * 看作是减少一个维度,此时&p就相当于一个二维指针,所以其类型就为指针的指针,所以可以使用g()函数:
所以这里将&p作为形参传入g()函数,所以x=&p, 则 * x=p,则需要一个强制转换成int * 类型的变量,由于p就是指针变量类型,这里的100并不是整型变量,而是一个指针变量。
所以得出结论就是:若想改变任何变量的值,将该值的地址作为形参传入函数进行重新赋值,由于取地址符可看作是增加了一个维度则在函数的形参中需要加上相对应的 * 来使形参和实参兼容。