五.简单函数

五.简单函数


函数是什么?


函数是 一种将输入值映射到唯一输出值的对应关系 1。


在数学中,函数通常表示为 $y = f(x)$,其中 $x$ 是自变量,$y$ 是因变量,$f$ 是对应法则2。

c++中,函数是一段可以重复使用的一段代码,每一段c++程序至少有一个函数即
main(),函数用于执行特定的任务

函数是执行特定操作的代码块。它可以有输入(即参数),并且可以返回一个值。
函数的定义包括函数名、参数列表、返回类型和函数体。
而函数的声明则告诉编译器函数的名称、返回类型和参数,但不包括函数体。


从用户使用的角度看,函数有两种


系统函数,即库函数,由编译系统提供,可以直接使用。

自定义函数,用以解决用户的专门需要。 


从函数的形式看,函数分两类


无参函数,调用函数时不必给出参数。

有参函数,在调用函数时,要给出参数。


1.返回类型 


表示函数返回值的数据类型


基本数据类型


int:整数

float:浮点数

double:双精度浮点数

char:字符

byte:8位有符号二进制补码整数

short:16位有符号二进制补码整数

long:64位有符号二进制补码整数

boolean:真或假


引用数据类型 :


class:用户定义的类

interface:返回实现了某个接口的对象

array:任何基本数据类型或引用数据类型的数组

enum:用户定义的枚举类型

泛型类型

特殊类型 :

void:表示方法不返回任何值

auto:让编译器自动推断返回值类型

智能指针:指向动态分配

对象的指针

Optional:表示可能为空的值

Stream:表示数据流


其他类型 :


String:用于表示文本数据2

Binary data:二进制数据,如图片、音频、视频等6

Json:一种轻量级的数据交换格式,适合用于接口数据的传输6

XML:一种可扩展标记语言,用于数据交换6

这些返回类型可以用于定义函数或方法的返回值,以满足不同的编程需求。
在实际编程中,选择合适的返回类型可以提高代码的可读性和可维护性6。


2.函数名


函数名是用来标识函数的唯一名称,可以根据函数名来调用相应的函数。

main(): 主函数,程序运行时首先被调用的函数。可以在这个函数中定义和执行主要的程序逻辑。

setup(): Arduino编程中的一个特殊函数名,用于初始化硬件设置或全局变量的初始值。通常在程序开始运行时被调用。

loop(): Arduino编程中的另一个特殊函数名,用于编写主要的程序逻辑。在程序初始化后,loop函数会被不断调用,实现循环执行。

print(): 常见的输出函数,用于将数据打印到控制台或其他设备上。

scanf(): 常见的输入函数,用于从用户处接收输入数据。

strlen(): 计算字符串长度的函数。

sqrt(): 求平方根的数学函数。

rand(): 生成随机数的函数。

open(): 用于打开文件的函数。

close(): 用于关闭文件的函数。

3.参数列表


参数列表中的参数用逗号分开,列表中包含了传递给调用函数的变量的声明。
如果函数不接收任何参数,参数列表就声明为void

函数定义的一般格式为:

返回值类型 函数名 (参数列表)

{

    声明

    语句

}

返回值

返回值类型是指返回给定义函数的值的类型,如果一个函数没有返回值,返回值类型就声明为void。

4.函数体 


函数体是编程语言中定义一个函数功能的所有代码组成的整体.格式

例如

#include 

// 函数声明3

int add(int a, int b);

int main() {

int x = 5;

int y = 3;

int sum = add(x, y); // 调用函数

std::cout << "Sum: " << sum << std::endl;

return 0;

}

// 函数定义

int add(int a, int b) {

return a + b; // 函数体

}

在这个示例中:

add是函数名。

int a, int b是参数列表。

int是返回类型。

{ return a + b; }是函数体


2.

int add(int a, int b) {
    return a + b;
}
int add(int a, int b) {9

return a + b2;

}


在实际开发中,我们经常会遇到一些场景,其中函数调用所需的参数数量不是固定的。

本文将详细讲解每个宏的作用,演示一个简单的可变参数函数的实现,并讨论在使用过程中应当注意的问题。

此外,还将比较 C 和 C++ 在这方面的差异,以及探索更现代的方法,比如模板和重载,在某些情况下可以作为传统可变参数函数的替代方案。


在计算机程序设计,一个可变参数函数是指一个函数拥有不定引数,即是它接受一个可变数目的参数。

简单来说,就是函数的参数个数可变,参数类型不定的函数。

不同的编程语言对可变参数函数的支持有很大差异。


 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/69811.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Redis】set 和 zset 类型的介绍和常用命令

1. set 1.1 介绍 set 类型和 list 不同的是&#xff0c;存储的元素是无序的&#xff0c;并且元素不允许重复&#xff0c;Redis 除了支持集合内的增删查改操作&#xff0c;还支持多个集合取交集&#xff0c;并集&#xff0c;差集 1.2 常用命令 命令 介绍 时间复杂度 sadd …

一些计算机零碎知识随写(25年2月)

今天复习 MySQL 的时候&#xff0c;我突然冒出一个想法&#xff1a;能不能远程连接 MySQL 呢&#xff1f;虽说心里清楚理论上可行&#xff0c;但一直没实际操作过。 于是&#xff0c;起床后我立马打开服务器&#xff0c;准备启动 MySQL。结果&#xff0c;这一启动就发现问题了&…

ESP32-c3实现获取土壤湿度(ADC模拟量)

1硬件实物图 2引脚定义 3使用说明 4实例代码 // 定义土壤湿度传感器连接的模拟输入引脚 const int soilMoisturePin 2; // 假设连接到GPIO2void setup() {// 初始化串口通信Serial.begin(115200); }void loop() {// 读取土壤湿度传感器的模拟值int sensorValue analogRead…

Java 大视界 -- Java 大数据在量子通信安全中的应用探索(69)

&#x1f496;亲爱的朋友们&#xff0c;热烈欢迎来到 青云交的博客&#xff01;能与诸位在此相逢&#xff0c;我倍感荣幸。在这飞速更迭的时代&#xff0c;我们都渴望一方心灵净土&#xff0c;而 我的博客 正是这样温暖的所在。这里为你呈上趣味与实用兼具的知识&#xff0c;也…

86.(2)攻防世界 WEB PHP2

之前做过&#xff0c;回顾一遍&#xff0c;详解见下面这篇博客 29.攻防世界PHP2-CSDN博客 既然是代码审计题目&#xff0c;打开后又不显示代码&#xff0c;肯定在文件里 <?php // 首先检查通过 GET 请求传递的名为 "id" 的参数值是否严格等于字符串 "admi…

从理论到实践:Linux 进程替换与 exec 系列函数

个人主页&#xff1a;chian-ocean 文章专栏-Linux 前言&#xff1a; 在Linux中&#xff0c;进程替换&#xff08;Process Substitution&#xff09;是一个非常强大的特性&#xff0c;它允许将一个进程的输出直接当作一个文件来处理。这种技术通常用于Shell脚本和命令行操作中…

【数据结构】初识链表

顺序表的优缺点 缺点&#xff1a; 中间/头部的插入删除&#xff0c;时间复杂度效率较低&#xff0c;为O(N) 空间不够的时候需要扩容。 如果是异地扩容&#xff0c;增容需要申请新空间&#xff0c;拷贝数据&#xff0c;释放旧空间&#xff0c;会有不小的消耗。 扩容可能会存在…

增删改查(CRUD)操作

文章目录 MySQL系列&#xff1a;1.CRUD简介2.Create(创建)2.1单行数据全列插入2.2 单行数据指定插入2.3 多⾏数据指定列插⼊ 3.Retrieve(读取)3.1 Select查询3.1.1 全列查询3.1.2 指定列查询3.1.3 查询字段为表达式&#xff08;都是临时表不会对原有表数据产生影响&#xff09;…

使用Pygame制作“贪吃蛇”游戏

贪吃蛇 是一款经典的休闲小游戏&#xff1a;玩家通过操控一条会不断变长的“蛇”在屏幕中移动&#xff0c;去吃随机出现的食物&#xff0c;同时要避免撞到墙壁或自己身体的其他部分。由于其逻辑相对简单&#xff0c;但可玩性和扩展性都不错&#xff0c;非常适合作为新手练习游戏…

JavaScript闭包深入剖析:性能剖析与优化技巧

一、引言 在 JavaScript 的奇妙世界里&#xff0c;闭包无疑是一个既强大又迷人的特性。它就像是一把万能钥匙&#xff0c;为开发者打开了实现各种高级功能的大门。从数据封装与保护&#xff0c;到函数的记忆化&#xff0c;再到模块化开发&#xff0c;闭包都发挥着举足轻重的作…

蓝桥杯嵌入式赛道备考1 —— 基础GPIO实战

1. 点亮一个LED 蓝桥杯的板子资料的URL&#xff0c;笔者是从GitHub - JoyRiderJie/LanQiaoBei-QianRuShi拉去下来的。这个是Github仓库地址。 从应用层去玩一个开发板子&#xff0c;首先需要的是去尝试是点亮一个LED。让我们切换到手册《CT117E——产品手册》的第11页&#x…

浅析DNS污染及防范

DNS污染&#xff08;DNS Cache Poisoning&#xff09;是一种网络攻击手段&#xff0c;通过篡改DNS服务器的缓存数据&#xff0c;将域名解析结果指向错误的IP地址&#xff0c;从而误导用户访问恶意网站或无法访问目标网站。这种攻击利用了DNS协议的特性&#xff0c;例如“只认第…

AI编程:如何编写提示词

这是小卷对AI编程工具学习的第2篇文章&#xff0c;今天讲讲如何编写AI编程的提示词&#xff0c;并结合实际功能需求案例来进行开发 1.编写提示词的技巧 好的提示词应该是&#xff1a;目标清晰明确&#xff0c;具有针对性&#xff0c;能引导模型理解问题 下面是两条提示词的对…

linux asio网络编程理论及实现

最近在B站看了恋恋风辰大佬的asio网络编程&#xff0c;质量非常高。在本章中将对ASIO异步网络编程的整体及一些实现细节进行完整的梳理&#xff0c;用于复习与分享。大佬的博客&#xff1a;恋恋风辰官方博客 Preactor/Reactor模式 在网络编程中&#xff0c;通常根据事件处理的触…

【思维导图】并发编程

学习计划&#xff1a;将目前已经学的知识点串成一个思维导图。在往后的学习过程中&#xff0c;不断往思维导图里补充&#xff0c;形成自己整个知识体系。对于思维导图里的每个技术知识&#xff0c;自己用简洁的话概括出来&#xff0c; 训练自己的表达能力。 并发和并行的区别 并…

【B站保姆级视频教程:Jetson配置YOLOv11环境(四)cuda cudnn tensorrt配置】

Jetson配置YOLOv11环境&#xff08;4&#xff09;cuda cudnn tensorrt配置 文章目录 0. 简介1. cuda配置&#xff1a;添加cuda环境变量2. cudnn配置3. TensorRT Python环境配置3.1 系统自带Python环境中的TensorRT配置3.2 Conda 虚拟Python环境中的TensorRT配置 0. 简介 官方镜…

【深度分析】DeepSeek 遭暴力破解,攻击 IP 均来自美国,造成影响有多大?有哪些好的防御措施?

技术铁幕下的暗战&#xff1a;当算力博弈演变为代码战争 一场针对中国AI独角兽的全球首例国家级密码爆破&#xff0c;揭开了数字时代技术博弈的残酷真相。DeepSeek服务器日志中持续跳动的美国IP地址&#xff0c;不仅是网络攻击的地理坐标&#xff0c;更是技术霸权对新兴挑战者的…

如何在数据湖中有效治理和管理“数据沼泽”问题,提高数据的可发现性和利用率?

在数据湖中有效治理和管理“数据沼泽”问题&#xff0c;提高数据的可发现性和利用率&#xff0c;需要从多个方面入手&#xff0c;包括数据治理、元数据管理、数据质量控制、安全性保障以及生命周期管理等。以下是具体的策略和方法&#xff1a; 1. 构建强大的数据治理框架 数据…

【4Day创客实践入门教程】Day3 实战演练——桌面迷你番茄钟

Day3 实战演练——桌面迷你番茄钟 目录 Day3 实战演练——桌面迷你番茄钟1. 选择、准备元件、收集资料2. 硬件搭建3.编写代码 Day0 创想启程——课程与项目预览Day1 工具箱构建——开发环境的构建Day2 探秘微控制器——单片机与MicroPython初步Day3 实战演练——桌面迷你番茄钟…

Oracle Primavera P6自动进行进度计算

前言 在P6 Professional 有一个自动计划计算的选项&#xff0c;很多人不了解该设置如何使用&#xff0c;以及什么时候该启动这项配置。 详情 P6 Professional 默认为非自动进度计算。启用自动选项后&#xff0c;可以快速查看调度更改的效果。 ​ ​ 如图所示&#xff0c;当你…