五.简单函数

五.简单函数


函数是什么?


函数是 一种将输入值映射到唯一输出值的对应关系 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,一经查实,立即删除!

相关文章

SQLite Update 语句详解

SQLite Update 语句详解 SQLite 是一款轻量级的数据库管理系统&#xff0c;以其简单、易用和高效的特点在全球范围内得到了广泛的应用。在 SQLite 中&#xff0c;UPDATE 语句是用于修改数据库表中记录的常用命令。本文将详细解析 SQLite 的 UPDATE 语句&#xff0c;包括其语法…

【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;这一启动就发现问题了&…

【Java异步编程】CompletableFuture实现:异步任务的合并执行

文章目录 一. 合并两个异步任务的结果1. thenCombine()&#xff1a;组合两个异步任务的结果2. runAfterBoth()&#xff1a;在两个任务完成后执行无返回值操作3. thenAcceptBoth()&#xff1a;消费两个任务的结果 二. allOf()&#xff1a;等待所有任务完成 如果某个任务同时依赖…

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…

PHP根据IP地址获取地理位置城市和经纬度信息

/** 根据IP地址 获取地理位置*/ function getLocationByIP($ip) {$url "http://ip-api.com/json/{$ip}?langzh-CN&fieldsstatus,message,country,countryCode,region,regionName,city,lat,lon,timezone,isp,org,as";$response file_get_contents($url);$data …

从理论到实践: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;闭包都发挥着举足轻重的作…

Java 泛型<? extends Object>

在 Java 泛型中&#xff0c;<? extends Object> 和 <?> 都表示未知类型&#xff0c;但它们在某些情况下有细微的差异。泛型的引入是为了消除运行时错误并增强类型安全性&#xff0c;使代码更具可读性和可维护性。 在 JDK 5 中引入了泛型&#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;例如“只认第…

前端学习-事件解绑,mouseover和mouseenter的区别(二十九)

目录 前言 解绑事件 语法 鼠标经过事件的区别 鼠标经过事件 示例代码 两种注册事件的区别 总结 前言 人道洛阳花似锦&#xff0c;偏我来时不逢春 解绑事件 on事件方式&#xff0c;直接使用null覆盖就可以实现事件的解绑 语法 btn.onclick function(){alert(点击了…

AI编程:如何编写提示词

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

R 字符串:深入理解与高效应用

R 字符串:深入理解与高效应用 引言 在R语言中,字符串是数据处理和编程中不可或缺的一部分。无论是数据清洗、数据转换还是数据分析,字符串的处理都是基础技能。本文将深入探讨R语言中的字符串概念,包括其基本操作、常见函数以及高效应用方法。 字符串基本概念 字符串定…

处理 .gitignore 未忽略文件夹问题

本地删除缓存 例如 .idea 文件夹被其他同事误提交&#xff0c;那么他本地执行以下代码 git rm -r --cached .idea对应本地再提交即可