【学习笔记之我要C】函数的参数与调用

简介: 【学习笔记之我要C】函数的参数与调用

一、函数参数

形式参数——形参

  形式参数是指函数名后括号中的变量,因为形式参数只有在函数被调用的过程中才实例化(分配内存单元),所以叫形式参数。当函数调用完成之后,形式参数就自动销毁了。因此形式参数只在函数中有效。

实际参数——实参

真实传给函数的参数,叫实参。实参可以是:常量、变量、表达式、函数等。无论实参是何种类型的量,在进行函数调用时,他们都必须有确定的值,以便把这些值传送给形参。

//判断一个数是不是素数
int is_prime(int n) {//这里的n就是形参
  //2->n-1之间的数字
  int j = 0;
  for (j = 2; j < n; j++) {
    if (n % j == 0)
      return 0;
  }
  return 1;
}
int main() {
  //100-200之间的素数
  int i = 0;
  int count = 0;
  for (i = 100; i <= 200; i++) {
    if (is_prime(i) == 1) {//这里i是实参
      count++;
      printf("%d ", i);
    }
  }
  printf("\n100-200之间有 %d 个素数\n", count);
  return 0;
}

二、函数调用

传值调用

  函数的形参和实参分别占有不同的内存块,对形参的修改不会影响实参。

//判断一个年份是否是闰年
is_leap_year(int x) {
  if ((0 == x % 4 && 0 != x % 100) || (0 == x % 400))
    return 1;
  else
    return 0;
}
int main() {
  int y = 0;
  for (y = 1000; y <= 2000; y++) {
    if (is_leap_year(y) == 1) {
      printf("%d ", y);
    }
  }
  return 0;
}

 上面的代码中,x是形参y是实参,如果打印x和y的地址,可以得出他们俩的地址并不相同。

传址调用

  传址调用是把函数外部创建的内存地址传递给函数参数的一种调用函数的方式;

  这种传参方式可以让函数和函数外边的变量建立起真正的联系,也就是函数内部可以直接操作函数外部的变量

//写一个函数,每调用一次这个函数,就会将num的值增加1
void Add(int* p) {
  (*p)++;
}
int main() {
  int num = 0;
  Add(&num);
  printf("%d\n", num);
  Add(&num);
  printf("%d\n", num);
  Add(&num);
  printf("%d\n", num);
}
目录
相关文章
|
9月前
|
存储 C语言
C 语言函数完全指南:创建、调用、参数传递、返回值解析
函数是一段代码块,只有在被调用时才会运行。 您可以将数据(称为参数)传递给函数。 函数用于执行某些操作,它们对于重用代码很重要:定义一次代码,并多次使用。
250 3
|
3月前
|
设计模式 Python
学习函数的参数传递和返回值
在编写函数时,不可避免地会出现一些错误。通过调试代码,查看参数的值在函数内部的变化以及返回值是否符合预期,有助于更好地理解参数传递和返回值的机制。
|
4月前
|
缓存 Python
深度解密为什么实例在调用方法时会将自身传给 self 参数(一)
深度解密为什么实例在调用方法时会将自身传给 self 参数
65 0
|
4月前
|
设计模式 Python
深度解密为什么实例在调用方法时会将自身传给 self 参数(二)
深度解密为什么实例在调用方法时会将自身传给 self 参数(二)
56 1
|
6月前
函数的不定参数你是这样用吗?
函数的不定参数你是这样用吗?
33 2
在调用一个函数时传递了一个参数,但该函数定义中并未接受任何参数
在调用一个函数时传递了一个参数,但该函数定义中并未接受任何参数
139 2
|
9月前
|
存储 搜索推荐 Python
函数的调用和返回值
函数的调用和返回值
|
存储 C语言 容器
调用一个函数时发生了什么?
调用一个函数时发生了什么?
171 0
调用一个函数时发生了什么?
|
Java Scala 开发者
作为参数的函数 | 学习笔记
快速学习作为参数的函数
|
开发者 Python
函数的参数| 学习笔记
快速学习函数的参数