0.展示PTA总分
1.本章学习总结
1.1 学习内容总结
1.c语言中函数的分类:
1.库函数
比如:
strcpy
Char strcpy(char* destination,const char* source);
Printf
Int printf (const char* format,…);
Memset
Memset(void* ptr,int value,size_t num);
*2.自定义函数
函数组成:
type name(paral)
{
Statement;//语句项
}
type 返回类型
name 函数名
Paral 函数参数
2.函数的声明和定义
1.函数声明:
告诉编译器有一个函数叫什么,参数是什么,返回类型是什么。但是具体是不是存在,无关紧要。
函数的声明一般出现在函数的使用之前。要满足先声明后使用。
函数的声明一般要放在头文件中的。
2.函数定义:
函数的定义是指函数的具体实现,交待函数的功能实现。
头文件:#include <stdio.h>
#include<time.h>
#include <stdlib.h>
#include<math.h>
void ListMenu1(int n);
void GetChoise();
3.函数的参数
*1.实际参数
真实传给函数的参数,实参可以是:常量,变量,表达式,函数等。无论参数是何种类型,都必须有真实确定的值。
*2.形式参数
函数名括号后的变量,形参只有在函数调用的时候才实例化,当函数调用完成就销毁了。
区别
*一、函数中使用:
形参出现在函数定义中,在整个函数体内都可以使用, 离开该函数则不能使用。
实参出现在主调函数中,进入被调函数后,实参变量也不能使用。
*二、调用
形参变量只有在被调用时才分配内存单元,在调用结束时,即刻释放所分配的内存单元。因此,形参只在函数内部有效。函数调用结束返回主调用函数后则不能再使用该形参变量。
实参可以是常量、变量、表达式、函数等,无论实参是何种类型的量,在进行函数调用时,它们都必须有确定的值,以便把这些值传送给形参。因此应预先用赋值,输入等办法使参数获得确定值。
//求最大公约数 #include <stdio.h> int gcd( int x, int y ); int main() { int x, y; scanf("%d %d", &x, &y); printf("%d\n", gcd(x, y)); return 0; } int gcd( int x, int y ) { int i; for(i=x;i>=1;i--){ if(x%i==0&&y%i==0) break; } return i; }
4.全局变量和 局部变量
*局部变量:“在函数内定义的变量”,即在一个函数内部定义的变量,只在本函数范围内有效。
*全局变量:“在函数外定义的变量”,即从定义变量的位置到本源文件结束都有效。
局部变量的有效适用范围被局限于所在函数内,因此主调函数只有通过参数传递,才能把实参数据传递给函数使用;同样,形参的改变也不会影响到实参变量。这种变量的有效使用范围,最大程度确保了
各函数之间的独立性,避免函数之间相互干扰。
全局变量:当一些变量需要被多个函数共同使用时。参数传递虽然是一个办法,但必须通过函数调用才能实现,并且函数只能返回一个结果,这会是程序设计受到很大限制。为了解决多个函数之间的变量
共用,因此定义了全局变量
(由于全局变量和局部变量的作用范围不同,因此允许他们同名,当在同一函数中同名时,全局变量不起作用而由局部变量起作用)
#include<stdio.h> int i; void mysub(); void main() { int j = 5; i = 50; mysub(j); printf("i = %d\t%d\n", i, j); } void mysub(int j) { i += 80; j += 100; }