知识点
一个指针变量只能指向同一类型的变量。即整型指针变量只能指向整型数据的地址,而不能放其它类型数据的地址。绝对不能对未赋值的指针变量作“取内容”运算。
函数的参数可以是指针类型,它的作用是将一个变量的地址传送到另一个函数中。指针变量作为函数参数与变量本身作函数参数不同,变量作函数参数传递的是具体值,而指针作函数参数传递的是内存的地址。
用指针变量作函数参数,在被调函数的执行过程中,应使指针变量所指向的参数值发生变化,这样,函数在调用结束后,其变化值才能保留回主调函数。
函数调用不能改变实参指针变量的值,但可以改变实参指针变量所指向变量的值。用指针变量作函数参数,可以得到多个变化了的值。
C++中函数调用时的三种参数传递方式:
按值传递的过程为:
首先计算出实参表达式的值,
接着给对应的形参变量分配一个存储空间;
然后把以求出的实参表达式的值一一存入到形参变量分配的存储空间中,成为形参变量的初值,供被调用函数执行时使用。
被调用函数本身不对实参进行操作!即使形参的值在函数中发生了变化,实参的值也完全不会受到影响,仍为调用前的值。
地址传递
如果在函数定义时将形参说明成指针,调用函数时就需要指定地址值形式的实参。这时的参数传递方式就是按地址传递方式。
按地址传递与按值传递的不同在于:形参指针和实参指针指向同一个地址。因此,被调用函数中对形参指针所指向的地址中内容的任何改变都会影响到实参。
引用传递
如果以引用为参数,则既可以使得对形参的任何操作都能改变相应的数据,又使得函数调用显得方便、自然。引用传递方式是在函数定义时在形参前面加上引用运算符“&”。
数组的指针和指向数组的指针变量
数组与变量一样,在内存中占据单元,有地址,一样可以用指针来表示。
C++规定:数组名就是数组的起始地址;又规定:数组的指针就是数组的起始地址。数组元素的指针就是数组元素的地址。
用指针变量作函数参数(形参)接收数组地址(实参)
数组名代表数组首元素的地址。
用数组名作函数的参数,传递的是数组首元素的地址。用指针变量作函数形参,同样可以接收从实参传递来的数组首元素的地址(此时,实参是数组名)。
心得
现在只能用非常基本的调用,还不理解这些复杂的调用情况,还需要仔细思考理解。
问题
还不熟练,很多内容不理解,需要时间消化。