指针
可能已经会了,只写一个例子吧
形式参数和实际参数
首先一个前置知识就是一个实际参数和形式参数
实际参数:真实传给函数的参数,叫实参。
形式参数是指函数名后括号中的变量,因为形式参数只有在函数被调用的过程中才实例化(分配内存单元),所以叫形式参数。
这里要注意了,如果你在函数中只是传值操作的话,形式参数是不能改变实际参数的值,其实形式参数更像是实际参数的一个副本,在调用这个函数的时候创建的一个副本,然后函数调用完成之后,形式参数直接就销毁了
一个典型的例子,就是用函数实现两个数字的交换
我们可以看到虽然函数里面的a,b交换了,但是主函数里面的并没有交换
然后就引入我们今天的重点:传引用,和传址调用,这里我先不说传址调用了
看看这个用传引用,就可以直接对他的地址里面的东西进行操作了,然后函数中操作的就不是那个副本了
是不是现在还看的比较疑惑,你看看这个就明白了,其实他们操作的就是一个地址
但是你看看这个传值函数调用的时候的地址,他们的地址根本不一样,所以操作形式参数不能改变实际参数
数的传引用
看一下这个例子
首先传引用的时候函数调用的时候要传进去他的地址,
然后我们都学过指针,这个指针int p有两种写法都对,一种是int p,一种就是int p;
但是我觉得第一种比较好理解一点,就是这个int 是一种指针类型,类似与double x;double是一种浮点数类型然后p是一个变量,这个p如果输出的话,就是一个地址,然后解引用的时候用*p,这个是输出地址里面的值,这个好像就是指针的用法。
数组的传引用
我们首先知道一个事情,假如说一个数组a[10],这个a是这个数组的首地址,a[i]才是地址里面的第i位数,a+i是第i位的地址,不用在&a了,咱们输出一下看看,正好一个int型的整数4个字节
所以数组在传引用的时候就不用在fun(&a)了
这里我个人感觉这个a[i]就是解引用了
或者说也可以这样
结构体的传引用
首先呢这个结构体和一个变量差不多,就是这个结构体在解引用的时候可以用->来
例如:
那有人就问了,为什么不输出520,因为。。。。。,没缘分呗,哈哈哈(狗头)
然后也可以这样写
这两个解引用的方法都可以用
结构体数组传引用
这个和数组一样的,在调用的时候用fun(p),而不是fun(&p),这个在数组那已经解释过了
下次更新全局变量等等,这些纯粹个人理解,如果有错误的地方,尽情谅解,私信我就行
标签:这个,语言,函数,地址,引用,指针,形式参数 From: https://www.cnblogs.com/lipu123/p/17198461.html