前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >C++指针变量作函数参数接收数组地址

C++指针变量作函数参数接收数组地址

原创
作者头像
小林C语言
修改2020-12-16 10:11:09
9410
修改2020-12-16 10:11:09
举报
文章被收录于专栏:C语言入门到精通

C++指针变量作函数参数接收数组地址

在C++中,用指针变量指向数组元素时要注意: 指针变量p可以指向有效的数组元素,实际上也可以指向数组 以后的内存单元。

代码语言:javascript
复制
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。

代码语言:javascript
复制
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]的值。

代码语言:javascript
复制
(*p)++表示p所指向的元素值加1。

如果p当前指向array[i],则 *(p--)先对p进行*运算,得到array[i],再使p减1,p指向array[i-1] 。

代码语言:javascript
复制
*(++p)先使p自加1,再作*运算,得到array[i+1]。
*(--p)先使p自减1,再作*运算,得到array[i-1]。

在C++中,将+和--运算符用于指向数组元素的指针变量十分有效,可以使指针变量自动向前或向后移动,指向下一个或上一个数组元素。

在上一节小林已经讲过:数组名代表数组首元素的地址,用数组名作函数的参数,传递的是数组首元素的地址,同样用指针变量作函数形参, 也可以接收从实参传递来的数组首元素的地址。 

在C++实际中,函数调用时并不存在一个占有存储空间的形参数组,只有指针变量。

实参与形参的结合,有以下几种形式: 

代码语言:javascript
复制
实参 形参
数组名 数组名
数组名 指针变量
指针变量 数组名
指针变量 指针变量

实参数组名array代表一个固定的地址,或者说是指针型常量,它的值是无法改变的;而形参数组名是指针变量,并不是一个固定的地址值,它的值是可以改变的。

在函数调用开始时,它接收了实参数组首元素的地址,但在函数执行期间,它可以再被赋值。

8.2 C++指针变量作函数参数接收数组地址

更多案例可以go公众号:C语言入门到精通

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档