C语言指针(2)

指针和函数

图中,swap中采用传址调用,*px中就是整形a的值,*py就是整形b的值。执行*px和*py的互换也就是执行a和b的互换。

如果采用传值调用会出现什么呢?

在哈函数调用的过程中,a,b的值分别传给了x和y。在执行swap后,仅仅发生了x和y的互换,在函数执行结束之后,这块空间便会释放,main函数中并未发生a和b的互换。简而言之,就是“单向传递”的“值传递”的方式,形参值得改变并不会影响实参。

注意:函数的调用可以(而且只可以)得到一个返回值(即函数值),而且使用指针变量作为参数,可以得到多个变化了的值。

指针和数组

这个示例中,我们定义了一个包含5个整数的数组arr。然后,我们将arr赋值给指针变量ptr,此时ptr指向数组的首元素arr[0]。然后,我们使用指针来访问数组的元素,可以通过指针运算符"*"来访问指针指向的元素。通过对指针进行自增运算,指针可以移动到下一个元素。

  • 这个示例中 ptr=arr 是把arr中首元素的地址赋给了指针变量ptr。
  • 指针变量已经指向arr[0]的元素,进行ptr++是指向同一数组的下一个元素。(当然也可以进行减法操作)
  • ++(*p),*p指向arr[0],++*p就是++arr[0]是2。

如图示例,p指向a数组首元素的位置,p+1指向a数组第一个元素的位置,以此类推……

引用数组的元素(综上所述)
  • 下标法
  • 指针法

数组作为函数的参数

在上述例子中,printArray函数的第一个参数是一个整型数组,第二个参数是数组的长度。在main函数中,我们定义了一个整型数组array,并计算出其长度。然后,将数组名array和长度作为参数传递给printArray函数。函数内部通过数组名arr来访问和修改数组元素。

当然也可以

总而言之,实参数组名代表一个固定的地址,或者说就是一个指针变量,但是形参数组名并不是一个固定的地址,而是按指针变量处理。

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值