S3-函数(1)下

简介: S3-函数(1)

3、函数的参数

3.1实际参数

真实传给函数的参数,叫实参。

实参可以是:常量、变量、表达式、函数等。

但注意:无论实参是何种类型的量,在进行函数调用时,它们都必须有确定的值,以便把这些值传送给形参。

3.2形式参数(形参)

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

补充说明:

(1)形参与实参类型一致、顺序对应、个数相同  

(2)在被定义的函数中,必须指定形参的类型

(3)若形参与实参类型不一致,自动按形参类型转换

(4)形参与实参占用不同的内存单元,单向传递(实参传给形参)

例:写一个函数交换两个整形变量的内容

//代码1
#include<stdio.h>
void swap(int x, int y)
{
  int tmp = x;
  x = y;
  y = tmp;
}
int main()
{
  int a = 0;
  int b = 0;
  //输入
  scanf("%d %d", &a, &b);
  //用函数交换a和b的值
  swap(a, b);//调用函数
  printf("%d %d\n", a, b);
  return 0;
}


但是我们运行之后发现,并没有成功。

只是为什么呢?

调试


实参a和b

形参x,y

使用的不是同一空间(地址不同)


当函数调用的时候,实参传递给形参,这时形参是实参的一份临时拷贝,对形参的修改不影响实参。 (即形参实例化之后其实相当于实参的一份临时拷贝


那我们怎么可以实现交换呢?这就是我接下来要讲的函数调用。

4、函数调用

  4.1  传值调用

  4.2  传址调用


4.1传值调用

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

4.2传址调用


1、传址调用是把函数外部创建变量的内存地址传递给函数参数(形参)的一种调用函数的方式。

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


注:1、在一个函数中可以多次调用其他函数,在调用语句中的函数名必须与函数定义中的函数名相同。

2、实际参数应与被调用函数定义中的形式参数个数相同、位置对应并且类型一致。

3、被调用函数必须存在

真正实现两个数内容的交换:传址调用

#include<stdio.h>
//pa--指针变量(用来存放地址的)
//*pa解引用操作-作用就是通过pa中的地址,找到a
void swap(int* pa, int * pb)
{
  int tmp =*pa;//*pa就是a
  *pa= *pb;
  *pb = tmp;
}
int main()
{
  int a = 0;
  int b = 0;
  scanf("%d %d", &a, &b);
  //用函数交换a,b
  swap(&a, &b);
  printf("%d %d\n", a, b);
  return 0;
}


注:地址是固定的,不能修改。

相关文章
|
4月前
|
程序员 编译器 C++
函数介绍
函数介绍
23 1
|
4月前
|
算法 编译器
函数(2)
函数(2)
26 0
|
7月前
MQTTClient_setCallbacks()函数
MQTTClient_setCallbacks()
462 0
|
8月前
|
算法 程序员 信息无障碍
从零带你认识函数(二)
从零带你认识函数
61 1
|
9月前
|
程序员 C语言
函数(1)
函数(1)
|
9月前
|
程序员 C语言 C++
函函函函函函函函函函函数——one
函函函函函函函函函函函数——one
56 0
|
11月前
|
算法 编译器 API
8.函数
8.函数
54 0
|
程序员 C语言
|
编译器 C语言 C++
C++——函数
C++——函数
C++——函数
函数加强
在我们日常开发中,如果要遍历一个文件夹下的所有文件,通常使用递归来实现;