编辑代码

#include <stdio.h>
int main () {
    /*
返回两个数比较小的数据
*/
int min(int a, int b) {
return a < b ? a : b;
}
    return 0;
}  
/*
函数的定义(创建、声明)
原型:
返回值数据类型 函数名(参数类型) {
若干代码
}
函数的调用
原型:
函数名(数据或者变量);
形参:就是参数类型
实参:就是传递给函数的实际数据或者变量
函数返回值
1.return可以将函数的运行结果返回给调用处
2.return可以用于结束函数
此时函数是无返回值的
返回值类型处要写void
函数的声明
原型:
返回值类型 函数名(形参列表);
编写位置和使用情况:
1.要写在头文件下面
2.用到函数声明时
通常都是把函数定义在main的下方
函数的递归调用
函数代码中有一行代码是调用自己
*/
int a = 3, b = 7;
int c = min(a, b);
printf("c = %d\n", c);
fun(0);
c = max(a, b);
printf("c = %d\n", c);
fun0(5);
return 0;
} 
/*
比较两个数的大小
返回比较大得数据
*/
int max(int a, int b) {
return a > b ? a : b;
}
/*
递归调用
*/
void fun0(int a) {
if (a != 0) {
a--;
printf("a = %d\n", a);
fun0(a);
}
}
/*
打印数组中每一个元素
*/
void fun1(int arr[], int num) {
for(int i = 0; i < num; i++) {
printf("arr[%d] = %d\n", i, arr[i]);
}
}
/*
打印二维数组中每一个元素的值
*/
void fun2(int arr[][2]) {
for (int i = 0; i < 2; i++) {
for (int j = 0; j < 2; j++) {
printf("arr[%d][%d] = %d\n", i, j, arr[i][j]);
}
}
}
/*
指针
指针就是内存地址
指针的定义(声明、创建)
数据类型 *变量名;
给指针变量进行赋值
需要用&取地址符来给指针变量进行赋值
取出指针中的数据
需要用*取值符来取出指针中的数据值
指针变量作为函数参数
传入到函数中的是数据的地址
一维数组与指针
1.指针指向一维数组时
保存的是数组中第0个位置上的元素
2.数组名可以看做是一个指针
*/
int *p;
int a = 3;
p = &a;
printf("a = %d\n", *p);
int b = 4;
printf("b = %d\n", b);
fun(a, b);
printf("a = %d\n", a);
printf("b = %d\n", b);
fun0(&a, &b);
printf("a = %d\n", a);
printf("b = %d\n", b);
int arr[] = {3, 5};
p = arr;
printf("arr[0] = %d\n", *arr);
printf("arr[1] = %d\n", *(p + 1));
return 0;
}
/*
交换两个参数的值
*/
void fun(int a, int b) {
a = a + b;
b = a - b;
a = a - b;
}
/*
交换两个地址上的值
*/
void fun0(int *a, int *b) {
*a = *a + *b;
*b = *a - *b;
*a = *a - *b;
}