一、函数
·
函数三要素
函数名 功能名字
参数列表 y = f(x) 或者y =f(x,y)
返回值 y = f(x)
二、 函数的定义、调用
2.1 无参函数
#include <stdio.h>
#include <stdlib.h>
void getpid()
{
printf("f \r\n");
}
int main() {
printf("fine \r\n");
return 0;
}
2.2 有参函数
#include <stdio.h>
#include <stdlib.h>
int getadd(int x,int y) {
return x+y;
}
int main() {
int a;
int b;
int ans = 0;
printf("fine \r\n");
puts("please sent two num to add ! \r\n");
scanf("%d %d",&a,&b);
ans = getadd(a,b);
printf("Get Num = %d \r\n",ans);
return 0;
}
2.3 占位
#include <stdio.h>
#include <stdlib.h>
void getpid()
{
}
int main() {
getpid();
printf("fine \r\n");
return 0;
}
三、实参和形参
#include <stdio.h>
#include <stdlib.h>
int show(int x) {
printf("x =%d x 's address =%p \r\n",x,&x);
}
int main() {
int x = 10 ;
printf("x =%d main x's = %p \r\n",x,&x);
show(x);
return 0;
}
形参和实参值相同,但是地址空间不同
四、函数嵌套
#include <stdio.h>
#include <stdlib.h>
void init()
{}
void fin()
{
init();
}
int main() {
fin();
return 0;
}
五、函数递归
#include <stdio.h>
#include <stdlib.h>
int getage(int num) {
int result = 0;
if(num == 1) {
result = 10;
} else {
result = getage(num - 1) + 1;
}
return result;
}
int main() {
int num = 0;
int ans = 0;
puts("sent stu age num");
scanf("%d",&num);
ans = getage(num);
printf("ans =%d \r\n",ans);
return 0;
}
六、阶乘
#include <stdio.h>
#include <stdlib.h>
int getage(int num) {
int result = 0;
if(num == 1) {
result = 1;
} else {
result = getage(num - 1)*num;
}
return result;
}
int main() {
int num = 0;
int ans = 0;
puts("sent stu age num");
scanf("%d",&num);
ans = getage(num);
printf("ans =%d \r\n",ans);
return 0;
}
七、数组作为函数的参数
#include <stdio.h>
#include <stdlib.h>
void printData(int data) {
printf("Data = %d \r\n",data);
}
void printArr(int shuzu[3]) {
int i = 0;
for(i = 0; i <3; i++) {
printf("%d ",shuzu[i]);
}
}
int main() {
int arry[3] = {1,2,3};
printData(arry[0]);
printArr(arry);
return 0;
}
八、数组传参
一维数组传参
int array[],是一个地址,不是
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void printKarray(int array[],int len) {
int i = 0;
for(i =0 ; i < len; i++) {
printf(" %d ",array[i]);
}
}
int main() {
int array[5] = {1,2,3,4,5};
int size = sizeof(array)/sizeof(array[0]);
printKarray(array,size);
return 0;
}
二维数组传参
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void printKarray(int array[][3], int hang, int lie) {
int i = 0;
int j = 0;
for(i = 0; i <hang; i++) {
for(j = 0; j < lie; j++) {
printf("%d ",array[i][j]);
}
puts("\r\n");
}
}
int main() {
int array[2][3] = {1,2,3,4,5,6};
int hang = 0;
int lie = 0;
printKarray(array,2,3);
return 0;
}
九、外部变量和全局变量
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int a = 10;
int b = 20;
void printKL()
{
printf("%d %d \n",a,b);
}
void printML()
{
a =90;
printf("%d %d \n",a,b);
}
int main() {
printKL();
printML();
printKL();
return 0;
}