【C++自学记录】指针函数以及形参与实参

两个简单的指针函数如下:

以上的输出分别是10 20和20 10。即正常的函数形参只代表实参的值,另开辟一个空间进行计算,因此,在函数体执行完之后,若没有返回值,则这个函数内的计算结果全部清除。

而第二个为指针函数,可以改变实参的值。要知道的是:指针变量也有地址,在该例中,输出以下内容标记:

在输出,a指向的地址,指的指针变量a的值,而存储a的地址指的是对于*a变量而言也需要有存储地址,因此,指针函数是把存储原变量的地址传入,然后在函数内部使用地址操作的方式进行计算和改变,因此相当于直接对函数体外的实参进行修改,因此会改变实参的值。

从输出的指针变量的地址可以看出,指针变量的地址使用使用十六进制的数来输出,也可以使用十进制输出地址:ip2decimal(&a)。同时,在64位系统中,指针变量的大小为8个字节1 byte = 8 bit

C++中,arr[1]和*(arr+1)是等价的。数组的名字代表数组第一个元素的地址:

arr= &arr[0]=address of first element of array

如下两种程序写法都能够完成冒泡排序:

在该方法中,未使用返回值,直接使用指针传递,可以改变实参(函数结构体外)的值。另外,也可以直接将函数头写为:

void bubblesort2(int arr[], int num)

因此,数组第i个元素可以表示为:arr[i]=*(arr+i),数组第i个元素的地址可以表示为:&arr[i]=arr+i。另外,在C++中,只有在函数头中,int *arr和int arr[]含义相同,都是一个int指针。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

弯呼外行

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值