前言
函数定义:
返回值类型符 函数名(类型符1 形参名1,类型符2 形参名2,...)
{
//***************函数体
变量声明部分;
执行部分;
}
调用带有参数的函数,存在着如何将实参传递给形参的问题。根据实参传递给形参值的不同,分为值传递方式和地址传递方式。
1.值传递方式
函数调用时,为形参分配内存单元,并将实参的值复制到形参中,调用结束后,形参所占内存单元被释放,实参的内存单元扔保留并维持原值。
原因是形参和实参占用不同的内存单元,函数中对形参值的改变不会改变实参的值。
2.地址传递方式
函数调用时,将实参数据的存储地址作为参数传递给形参。实参和形参必须是地址常量或者地址变量,他们占用相同的地址单元,函数中对形参值的改变也会改变实参值。
#include <stdio.h>
#include <stdlib.h>
//两种方式交换两数值
void exch1(int a,int b);
void exch2(int *a,int *b);
int main()
{
int a=1,b=2;
exch1(a,b);
printf("a=%d,b=%d\n",a,b);
exch2(&a,&b);
printf("a=%d,b=%d\n",a,b);
system("pause");
return 0;
}
void exch1(int a,int b)
{
int t;
t=a;
a=b;
b=t;
}
void exch2(int *a,int *b)
{
int t;
t=*a;
*a=*b;
*b=t;
}
//******************************************栗子**************
#include <stdio.h>
#include <stdlib.h>
int judge(int numb) //判断一个数是否为素数。返回值1表示是,0表示不是。
{
int flag=0;
switch(numb)
{
case 1:
case 2:break;
default:
{
for(int i=2;i<numb;i++)
if(numb%i==0)
flag++;
}break;
}
if(flag)
return 0;
else
return 1;
}
int find(int num,int *s) //寻找小于num的所有素数,并依次放置于s所指的数组中,函数返回素数的个数
{
int count=0;
for(int i=1;i<num;i++)
{
if(judge(i))
s[count++]=i;
}
s[count]='\0';
return (count);
}
int main()
{
int m=50,SuShu[100];
printf("小于m的素数的个数为:%d\n",find(m,SuShu));
for(int i=0;SuShu[i]!='\0';i++)
printf("SuShu[%d]=%d\n",i,SuShu[i]);
system("pause");
return 0;
}