C++指针变量作函数参数接收数组地址
在C++中,用指针变量指向数组元素时要注意: 指针变量p可以指向有效的数组元素,实际上也可以指向数组 以后的内存单元。
int arrya[10];//指针变量p的初值为&array[0]
*p=array;
cout<<*(p+10;//输出arry[10]的值
在使用指针变量指向数组元素时,应切实保证指向 数组中有效的元素指向数组元素的指针的运算比较灵活。
如果先使p指向数组array的首元素,则:
p++,使p指向下一元素,即array[1],如果用*p,得到下一个元素array[1]的值。
*p++,由于++和*同优先级,结合方向为自右而左,因此它等价于*(p++),作用是:先得到p指向的变量的值,然后再使p的值加1。
for(p=a:p<a+10;p++)
{
cout<<*p;
}
//等同于
for(p=a;p<a+10;)
{
cout<<*p++;
}
*(p++)与*(++p)作用不同,前者是先取* p值,然后使p加1,后者是先使p加1,再取* *p,若p的初值为array,输出*(p++)得到array[0]的值,而输出*(++p)则得到array[1]的值。
(*p)++表示p所指向的元素值加1。
如果p当前指向array[i],则 *(p--)先对p进行*运算,得到array[i],再使p减1,p指向array[i-1] 。
*(++p)先使p自加1,再作*运算,得到array[i+1]。
*(--p)先使p自减1,再作*运算,得到array[i-1]。
在C++中,将+和--运算符用于指向数组元素的指针变量十分有效,可以使指针变量自动向前或向后移动,指向下一个或上一个数组元素。
在上一节小林已经讲过:数组名代表数组首元素的地址,用数组名作函数的参数,传递的是数组首元素的地址,同样用指针变量作函数形参, 也可以接收从实参传递来的数组首元素的地址。
在C++实际中,函数调用时并不存在一个占有存储空间的形参数组,只有指针变量。
实参与形参的结合,有以下几种形式:
实参 形参
数组名 数组名
数组名 指针变量
指针变量 数组名
指针变量 指针变量
实参数组名array代表一个固定的地址,或者说是指针型常量,它的值是无法改变的;而形参数组名是指针变量,并不是一个固定的地址值,它的值是可以改变的。
在函数调用开始时,它接收了实参数组首元素的地址,但在函数执行期间,它可以再被赋值。
8.2 C++指针变量作函数参数接收数组地址
文章来源: zhuanlan.zhihu.com,作者:,版权归原作者所有,如需转载,请联系作者。
原文链接:zhuanlan.zhihu.com/p/337245080