C语言 指针作为函数的参数

  • 我们知道,当调用一个函数时,我们传入的参数可以是各种类型的,比如 int、double、char......

  • 那么当我们传入的参数是指针类型的呢?

  • 我们先以一个 “让输入的参数加1” 的函数为例来讲解。

实例:参数为整型

#include<stdio.h>
int add1(int num){  num = num + 1;  return num;}
int main(){  int a = 1;  a = add1(a);  printf("%d",a);  return 0;}
输出结果:2
  • 观察上面这段代码,初始时,a等于1。

  • 当我们使用函数 add1()来对 a 进行加 1 时,我们需要用 a 自身来接收函数的返回值。

  • 也就是 a = add1(a);

  • 因为我们传入函数的参数其实并不是真正的 a,传入的参数只是把 a 的值复制了一份,传入的只是跟 a 相等的一个数值。

  • 因此,函数对于传入参数的改变,只是改变了形参 num 的值,并没有改变 a 本身。

  • 如果我们想要让传入的参数是 a 本身的话,就需要传入 a 的地址,而不是 a 的值,也就是指针作为函数的参数。

实例:参数为指针

#include<stdio.h>
void add1(int* num) // 加上 * 变为指针类型{  *num = *num + 1; // 对指针指向的值进行直接操作  return;  // 结束函数}
int main(){  int a=1;  add1(&a);  // 不再需要对自身进行赋值  printf("%d",a);  return 0;}
输出结果:2
  • 这段代码中可以看到,调用函数时传入的参数前面多了个 &,也就是取地址符号,这就表示我们传入的参数不再是 a 的值,而是 a 的地址。

  • 同样的,在函数的定义上,因为我们传入的参数是 a 的地址,所以函数内对于形参 num 数据的改变会直接反映到 a 上面,也就是对 a 本身进行更改。

  • 此时函数不需要返回值,函数类型可以设为 void。

  • 同时也不再需要返回值,所以可以只写一个 return; 来表示函数结束。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值