当前位置: 首页 > news >正文

​​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;
}

http://www.dtcms.com/a/582189.html

相关文章:

  • 淘宝购物返利网站开发基层建设杂志网站
  • 某多多 Redis 面试相关知识点总结
  • 【STM32】知识点介绍三:哈希算法详解
  • Effective STL第8条: 切勿创建包含auto_ptr的容器对象
  • 使用DrissionPage实现虚拟货币市场数据智能爬取
  • 零基础入门C语言之预处理详解
  • 做外汇门户网站重庆相亲网
  • 域名怎么绑定自己网站企业网站如何去做优化
  • Cursor 2.0 扩展 Composer 功能,助力上下文感知式开发
  • C语言应用实例:奋勇争先锋(贪心,qsort用法)
  • 机器学习数学知识温习(2)- 高斯-正态分布
  • 【FAQ】HarmonyOS SDK 闭源开放能力 — Push Kit
  • 济南网站建设 泉诺家装公司排名前十
  • 网站开发主要都做些什么佛山网站优化有
  • 机器人+工业领域=?
  • 网站三大标签优化中山企业网站建设
  • 关于网站开发书籍域名服务器有哪些
  • 27.java openCV4.x 入门-Imgproc之图像线性混合
  • 基于Logistic映射与Chen超混沌系统结合DNA分块编解码的图像加密技术
  • dy自动化遇到的滑动问题
  • 打开上次浏览的网站百度seo搜索营销新视角
  • 购物网站设计意义推荐友情链接
  • Java面向对象核心面试技术考点深度解析
  • Python中的异步与并行
  • java每日精进 11.06【线程本地存储与异步上下文传递详解】
  • 用Python写爬虫获取大网站的每日新闻,为个人系统添加“今日热点”模块,这个想法现实吗?
  • 网站宽度 超宽推广普通话手抄报文字内容
  • [2-02-01].第03节:环境搭建 - 库表等基础数据准备
  • 建设网站视频百度云盘如何在网站上做免费代理
  • 计算机视觉(二):光度立体视觉与图像滤波