编程学习记录——第6课【函数】

函数

在计算机科学中,函数是一个大型程序中的某部分代码, 由一个或多个语句块组成。它负责完成某项特定任务,而且相较于其他代码,具备相对的独立性。

一般会有输入参数并有返回值,提供对过程的封装和细节的隐藏。这些代码通常被集成为软件库。

库函数

为了支持可移植性和提高程序的效率,所以 C 语言的基础库中提供了一系列类似的库函数,方便程序员进行软件开发。
有函数名,返回值类型和函数参数。
例 memset函数的使用,是将字符串ptr的第1至num个字符用value代替。
void * memset ( void * ptr, int value, size_t num );

库函数查询工具:

MSDN(Microsoft Developer Network)
www.cplusplus.com
http://en.cppreference.com (英文版)
http://zh.cppreference.com (中文版)
使用库函数需要注意的是,需要包含该函数的头文件;库函数掌握其使用方法即可。

自定义函数

和库函数一样;自定义函数有有函数名,返回值类型和函数参数。

和库函数不同的是,自定义函数由程序员自行设计,给程序员一个很大的发挥空间。

自定义函数由 返回类型,函数参数,语句项组成

实参与形参

形参:形参即形式参数,形式参数是指函数名后括号中的变量,因为形式参数只有在函数被调用的过程中才实例化(分配内存单元),只有在函数中才有效,函数调用完成后便被销毁。

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

函数的调用

1.传值调用

形参实质上是对实参的暂时拷贝,只是把值传递至函数,函数内对形参的修改不会影响实参。

2.传址调用

传址调用是在函数外部创建变量的内存地址传递至函数参数的一种形式,使函数内外的变量建立起真正的联系,从而实现在函数内对函数外的变量直接进行修改。

可以在函数内部修改变量,例:

//交换整数
int exchange(int* x, int* y)
{
	int tmp = *x;
	*x = *y;
	*y = tmp;
	return 0;
}
int main()
{
	int i = 0;int  j=0;
	scanf("%d", &i, &j);
	exchange(&i, &j);
	printf("%d %d", i, j);
	return 0;
}

实现了在函数内部对两个变量的值进行交换。

函数的嵌套调用和链式访问

嵌套调用

根据自身需求将函数进行组合使用,一个函数可以放在另一函数内部被调用,被称为嵌套调用,函数可以嵌套调用,但不能嵌套定义,也就是不能在以函数内定义另一函数,另外,在一函数内调用另一函数,要求被调用的此函数在之前定义。

链式访问

将一个函数返回的值传递给另一个函数作为参数。被称为链式访问。

例:

int main()
{
    printf("%d", printf("%d", printf("%d", 43)));
    return 0; }

打印的结果是4321,因为printf函数返回的值是打印的字符个数。
今日练习代码:

//素数判断
int  sushu(int i)
{
    	int j = 0;
		for (j = 2;j < i;j++)
		{
			if (i % j == 0) { return 0; }
			else if (j == i - 1) { return 1; }
		}
}
int main()
{
	for (int i = 100;i <= 200;i++)
	{
		if (sushu(i) == 1) { printf("%d ", i); }
	}
	return 0;
}
//闰年判断
int run(int year)
{
	if (year % 4 == 0 && year % 100 != 0) return 1;
	else if (year % 400 == 0) return 1;
	else return 0;
}
int main()
{
	int year = 0;
	scanf("%d", &year);
	if (run(year) == 1) printf("是闰年");
	else printf("不是闰年");
	return 0;
}
//交换整数
int exchange(int* x, int* y)
{
	int tmp = *x;
	*x = *y;
	*y = tmp;
	return 0;
}
int main()
{
	int i = 0;int  j=0;
	scanf("%d", &i, &j);
	exchange(&i, &j);
	printf("%d %d", i, j);
	return 0;
}
//乘法口诀表
int biao(int i)
{
	int m = 0;int n = 0;
	for (m = 1;m <= i;m++)
	{
		for (n = 1;n <= m;n++)
		{
			printf("%d * %d=%2d ", n, m, m * n);
		}
		printf("\n");
	}
	return 0;
}
int main()
{
	int i = 0;
	scanf("%d", &i);
	biao(i);
	return 0;
}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值