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

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

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

以上的输出分别是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指针。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/756763.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-30
下一篇 2022-04-30

发表评论

登录后才能评论

评论列表(0条)

保存