一.函数的参数
1.实参:真实传给函数的参数
实参可以是:常量 变量 表达式 函数等
无论实参是何种类型的量,在进行函数调用时,他们都必须是确定的值,以便把这些值传送给形参
2.形参:值函数括号中的变量,形式参数只有在被调用时才实例化(分配内存单元),当函数调用完后自动销毁 既形式参数只在函数中有效
3.当实参传递给形参时,形参是实参的一个临时拷贝 所以对形参的修改不能改变实参
#include<stdio.h>
//交换
void Swap(int* x,int* y){
int z=0;
z=*x;
*x=*y;
*y=z;
}
int main()
{
int a = 20;
int b = 10;
Swap(&a,&b);
printf("交换完成:a=%d,b=%d",a,b);
}
使用指针:
通过传递实参的地址(即指针),函数内部可以通过解引用指针来修改实参的值。
使用结构体:
通过传递一个包含多个成员的结构体,函数内部可以修改结构体的成员。
二.函数的调用
1.传值调用
函数的形参和实参分别占有不同的内存块,对形参的修改不会影响实参
2.传址调用
传址调用是把函数外部创建变量的内存地址传递给函数参数的一种函数调用方式 这种传参方式可以让函数和函数外边的变量建立起真正的联系,也就是函数内部可以直接操作函数外部的变量
例:判断是否为素数
#include<stdio.h>
int main(){
int i;
for(i=0;i<=100;i++)
{
//判断是否为素数用2~i-1试除i即可
int flag=1;//flag是1表示i是素数
int j=0;
for(j=2;j<=i-1;j++){
if(i%j==0){
flag=0;
break;
}
}
if(flag==1)
printf("%d",i);
}
return 0;
}
优化:若i不为素数 则在1到小于等于sqr(i)的数中必有一个因子 则只需判断2-sqr(i)即可