Linux环境下的C语言编程(十六)
前言
本文作为一个学习C语言学习笔记,记录 【史上最强最细腻的linux嵌入式C语言学习教程【李慧芹老师】-哔哩x课程笔记和自己的困惑之处。请各位大佬指出我的不足之处,更好的促进我的成长。
函数
函数是完成特定任务的独立代码块,可以接收输入参数并返回结果。
函数的定义
返回值类型 函数名(参数列表) {// 函数体// 返回语句
}
示例:Hello World函数
#include <stdio.h>// 函数定义
void sayHello() {printf("Hello, World!\n");
}int main() {sayHello(); // 调用函数return 0;
}
形参说明表
1. 定长参数函数
#include <stdio.h>// 计算两个数的和
int add(int a, int b) {return a + b;
}// 打印个人信息
void printInfo(char name[], int age) {printf("姓名: %s, 年龄: %d\n", name, age);
}int main() {int result = add(5, 3);printf("5 + 3 = %d\n", result);printInfo("张三", 20);return 0;
}
2. 变长参数函数
#include <stdio.h>
#include <stdarg.h>// 计算任意数量整数的和
int sum(int count, ...) {va_list args;va_start(args, count);int total = 0;for(int i = 0; i < count; i++) {total += va_arg(args, int);}va_end(args);return total;
}int main() {printf("三个数的和: %d\n", sum(3, 10, 20, 30));printf("五个数的和: %d\n", sum(5, 1, 2, 3, 4, 5));return 0;
}
函数声明
如果被调函数放在主调函数后面,需要先声明:
#include <stdio.h>// 函数声明
int multiply(int a, int b);
void greet();int main() {greet();printf("3 × 4 = %d\n", multiply(3, 4));return 0;
}// 函数定义
int multiply(int a, int b) {return a * b;
}void greet() {printf("hello world!\n");
}
函数的返回值
函数的返回状态是给父进程看的:
#include <stdio.h>
#include <string.h>// 判断长度函数
int checkPassword(char password[]) {int length = strlen(password);if(length < 6) {return -1; // 太短} else if(length > 20) {return -2; // 太长} else {return 0; // 符合要求}
}int main() {char pwd[] = "12345";int result = checkPassword(pwd);switch(result) {case 0:printf("密码符合要求\n");break;case -1:printf("错误:密码太短!\n");break;case -2:printf("错误:密码太长!\n");break;}return 0;
}
命令行参数示例
#include <stdio.h>int main(int argc, char *argv[]) {// 方法1:使用argcprintf("方法1 - 使用argc:\n");for(int i = 0; i < argc; i++) {printf("参数 %d: %s\n", i, argv[i]);}// 方法2:检查argv[i]是否为NULLfor(int i = 0; argv[i] != NULL; i++) {printf("参数 %d: %s\n", i, argv[i]);}return 0;
}
编译和运行:
bashgcc program.c -o program
./program hello world 123
示例
计算器函数
#include <stdio.h>// 计算器函数
double calculator(char operator, double a, double b) {switch(operator) {case '+':return a + b;case '-':return a - b;case '*':return a * b;case '/':if(b != 0) {return a / b;} else {printf("错误:除数不能为0!\n");return 0;}default:printf("错误:不支持的操作符!\n");return 0;}
}int main() {printf("10 + 5 = %.2f\n", calculator('+', 10, 5));printf("10 - 5 = %.2f\n", calculator('-', 10, 5));printf("10 * 5 = %.2f\n", calculator('*', 10, 5));printf("10 / 5 = %.2f\n", calculator('/', 10, 5));return 0;
}
