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

住房和城乡建设部建设司网站首页/网络推广方案模板

住房和城乡建设部建设司网站首页,网络推广方案模板,外贸营销邮件主题一般怎么写,手机 做网站函数是一组一起执行一个任务的语句。每个 C 程序都至少有一个函数,即主函数 main() 。 主函数可以调用其他函数,其他函数也可以相互调用,用户也可以那个自定义函数。 函数声明告诉编译器函数的名称、返回类型和参数。函数定义提供了函数的实…

函数是一组一起执行一个任务的语句。每个 C 程序都至少有一个函数,即主函数 main() 。

主函数可以调用其他函数,其他函数也可以相互调用,用户也可以那个自定义函数。

函数声明告诉编译器函数的名称、返回类型和参数。函数定义提供了函数的实际主体。

一、自定义函数

1、函数定义与声明

1.1 定义

一个函数应该包括函数头和函数体。定义函数的基本语法如下:

return_dataType function_name( parameter list )
{body of the function
}

函数说明:

  • return_dataType:返回值类型,它是函数返回的值的数据类型。可以是C语言中的任意数据类型。也可以不返回值,这种情况下,return_dataType 是关键字 void。
  • function_name:函数名称,,它函数标识符的命名规则。函数名和参数列表一起构成了函数签名。
  • 参数列表:参数就像是占位符。当函数被调用时,您向参数传递一个值,这个值被称为实际参数。参数列表包括函数参数的类型、顺序、数量。参数是可选的,也就是说,函数可能不包含参数。
  • body:函数主体,它是函数需要执行的代码语句,是函数的主体部分。

注意:C语言中,函数的定义是相互平行、独立的。即,函数体内不能包含其他函数的定义。

示例如下:

/* 函数返回两个数中较大的那个数 */
int max(int num1, int num2) {/* 局部变量声明 */int result;if (num1 > num2) {result = num1;} else {result = num2;}return result; 
}

2、函数声明

函数定义是为了让编译器知道函数的功能,而函数声明是为了让编译器预先知道函数名称、参数、返回类型等信息。而函数的实际主体可以单独定义。

函数声明的代码和函数定义时的函数头已基本一致,但是末尾要添加分号。一般格式如下:

return_dataType function_name( parameter list );

一般我们定义函数之前,要先对函数进行声明。因为编译器对 C代码是顺序编译的,而且总是从 main函数开始的。所以:

  • 如果自定义函数位于 main函数后面,则必须在 main函数前面先声明该函数(即调用之前先声明)。
  • 如果自定义函数位于 main函数前面,则不再进行函数声明,因此此时函数定义已包含了函数声明的作用。

示例如下:

int max(int num1, int num2);

2、调用函数

创建 C 函数时,会定义函数做什么,然后通过调用函数来完成已定义的任务。

当程序调用函数时,程序控制权会转移给被调用的函数。被调用的函数执行已定义的任务,当函数的返回语句被执行时,或到达函数的结束括号时,会把程序控制权交还给主程序。

通过函数名调用函数,并传递所需参数,如果函数返回一个值,则可以存储返回值。

实例1:调用之前先声明后定义函数

#include <stdio.h>/* 函数声明 */
int max(int num1, int num2);int main() {/* 局部变量定义 */int a = 100;int b = 200;int ret;/* 调用函数 */ret = max(a, b);printf("Max value is : %d\n", ret);return 0;
}/* 函数定义:返回两个数中较大的那个数 */
int max(int num1, int num2) {/* 局部变量声明 */int result;if (num1 > num2) {result = num1;} else {result = num2;}return result;
}

实例2:调用之前以定义函数

#include <stdio.h>/* 函数定义 */
void exchange(int a, int b) {int temp;temp = a;a = b;b = temp;printf("exchange: a=%d, b=%d\n", a, b);
}int main() {/* 局部变量定义 */int a = 100;int b = 200;/* 调用函数 */printf("1 --- a=%d, b=%d\n", a, b);exchange(a, b);printf("2 --- a=%d, b=%d\n", a, b);return 0;
}

在这里插入图片描述

二、函数传递参数的方式

函数参数的作用是传递数据给函数使用。

函数的参数可以分为两种:

  • 形式参数:声明和定义函数时,参数列表中的参数就是形式参数,简称形参。
  • 实际参数:调用函数时,传递给函数的参数就是实际参数,简称实参。

当调用函数时,有两种向函数传递参数的方式:

  • 传值调用:把参数的实际值复制给函数的形式参数。在这种情况下,修改函数内的形式参数不会影响实际参数。
  • 引用调用:通过指针传递方式,形参为指向实参地址的指针,当对形参的指向操作时,就相当于对实参本身进行的操作。

默认情况下,C 使用传值调用来传递参数。一般来说,这意味着函数内的代码不能改变用于调用函数的实际参数。

实例1:值传递。函数调用中的实例就是值传递,这里就不实例了。

实例2:引用传递

#include <stdio.h>/* 函数声明 */
void my_swap(int *x, int *y);int main() {/* 局部变量定义 */int a = 100;int b = 200;printf("交换前,a 的值: %d\n", a);printf("交换前,b 的值: %d\n", b);/* 调用函数来交换值&a 表示指向 a 的指针,即变量 a 的地址&b 表示指向 b 的指针,即变量 b 的地址*/my_swap(&a, &b);printf("交换后,a 的值: %d\n", a);printf("交换后,b 的值: %d\n", b);return 0;
}/* 函数定义 */
void my_swap(int *x, int *y) {int temp;temp = *x;    /* 保存地址 x 的值 */*x = *y;      /* 把 y 赋值给 x */*y = temp;    /* 把 temp 赋值给 y */return;
}

在这里插入图片描述

三、局部变量和全局变量

作用域(Scope)就是变量的有效范围,就是变量可以在哪个范围以内使用。

变量的作用域由变量的定义位置决定,在不同位置定义的变量,它的作用域是不一样的。

1、局部变量

定义在函数内部的变量称为局部变量(Local Variable),它的作用域仅限于函数内部, 出了函数就不能使用了。

函数的形参也是局部变量,也只能在函数内部使用。

示例如下:

#include <stdio.h>int sum(int m, int n) {int i, sum = 0;//m、n、i、sum 都是局部变量,只能在 sum() 内部使用for (i = m; i <= n; i++) {sum += i;}return sum;
}int main() {int begin = 5, end = 86;int result = sum(begin, end);//begin、end、result 也都是局部变量,只能在 main() 内部使用printf("The sum from %d to %d is %d\n", begin, end, result);return 0;
}

2、全局变量

在所有函数外部定义的变量称为全局变量(Global Variable),它的作用域默认是整个程序,也就是所有的代码文件(源文件),包括源文件(.c文件)和头文件(.h文件)。

如果给全局变量加上 static 关键字,它的作用域就变成了当前文件,在其它文件中就无效了。

示例如下:

#include <stdio.h>//定义三个全局变量,分别表示三个面的面积
int s1 = 0, s2 = 0, s3 = 0;int vs(int length, int width, int height) {int v;  //体积v = length * width * height;s1 = length * width;s2 = width * height;s3 = length * height;return v;
}int main() {int v = 0;v = vs(15, 20, 30);printf("v=%d, s1=%d, s2=%d, s3=%d\n", v, s1, s2, s3);v = vs(5, 17, 8);printf("v=%d, s1=%d, s2=%d, s3=%d\n", v, s1, s2, s3);return 0;
}

在这里插入图片描述

四、内部函数和外部函数

1、内部函数

如果定义一个函数只能被所在的源文件使用,那么这样的函数就称为内部函数,又称为静态函数。

定义内部函数时,使用关键字 static 进行修饰。先声明时一样修饰。

static return_dataType function_name( parameter list )
{body of the function
}

使用内部函数的好处是,不同开发者编写函数时,不必再担心函数是否会与其他源文件中的函数同名,因为内部函数只在所在源文件中有效,不同源文件中即使有相同的函数名,也没有关系。

2、外部函数

外部函数是可以是被其他源文件调用的函数,

定义外部函数时,使用关键字 extern 进行修饰。先声明时一样修饰。

extern return_dataType function_name( parameter list )
{body of the function
}

常见标准库函数:https://cplusplus.com/reference/clibrary/

– 求知若饥,虚心若愚。

相关文章:

C语言-函数

函数是一组一起执行一个任务的语句。每个 C 程序都至少有一个函数&#xff0c;即主函数 main() 。 主函数可以调用其他函数&#xff0c;其他函数也可以相互调用&#xff0c;用户也可以那个自定义函数。 函数声明告诉编译器函数的名称、返回类型和参数。函数定义提供了函数的实…...

蓝桥杯 枚举算法 (c++)

枚举就是根据提出的问题&#xff0c;——列出该问题的所有可能的解&#xff0c;并在逐一列出的过程中&#xff0c;检验每个可能解是否是问题的真正解&#xff0c; 如果是就采纳这个解&#xff0c;如果不是就继续判断下一个。 枚举法一般比较直观&#xff0c;容易理解&#xff0…...

Wordpress自定义小工具logo调用设置(可视化)

在主题开发中&#xff0c;需要调用网站的logo&#xff0c;最简单的办法就是用wp自带的函数&#xff0c;那就是the_custom_logo()&#xff0c;使用它还可以通过后台-自定义-logo&#xff0c;边修改边预览&#xff0c;还是很香的。 自定义徽标支持应首先使用add_theme_support()添…...

面试常考数据结构:红黑树、B树、B+树各自适用的场景

1. 磁盘基础知识 分页&#xff1a; 现代操作系统都使用虚拟内存来印射到物理内存&#xff0c;内存大小有限且价格昂贵&#xff0c;所以数据的持久化是在磁盘上。虚拟内存、物理内存、磁盘都使用页作为内存读取的最小单位。一般一页为4KB&#xff08;8个扇区&#xff0c;每个扇…...

Paddle GPU版本需要安装CUDA、CUDNN

完整的教程 深度学习环境配置&#xff1a;linuxwindows系统下的显卡驱动、Anaconda、Pytorch&Paddle、cuda&cudnn的安装与说明 - 知乎这篇文档的内容是尽量将深度学习环境配置(使用GPU)所需要的内容做一些说明&#xff0c;由于笔者只在windows和linux下操作过&#xf…...

MYSQL length函数

mysql length函数计算结果的单位是啥&#xff0c;和varchar字段类型的单位是相同的吗&#xff1f; 做了一下实验&#xff0c;结果如下&#xff1a; 1.mysql length 函数计算的是有多少个字符&#xff0c;比如字段值是 permission 则length函数计算结果为10。 2.如果字段类型是…...

uniapp 在android手机上运行tab栏页面跳转问题

【问题描述】&#xff1a; 使用uniapp写的项目&#xff0c;在tab页面&#xff0c;无论使用哪种方式的跳转&#xff0c;只要是在url后面拼接参数&#xff0c;在打包成apk文件后&#xff0c;在手机上面安装使用&#xff0c;都是获取不到susIndex参数的&#xff0c;而在浏览器上面…...

css3 hover效果

CSS3中的:hover伪类用于创建鼠标悬停时的样式效果。当用户将鼠标悬停在页面元素上时&#xff0c;你可以为这些元素定义不同的样式规则&#xff0c;以实现交互效果 /* 一般样式规则 */ element {/* 正常状态下的样式 */ }/* 悬停样式规则 */ element:hover {/* 鼠标悬停时的样式…...

C语言char与short取反以及符号判断问题

这个问题主要是在从对一个变量进行符号判断引出&#xff0c;有一种判断方法是#define ISUNSIGNED(Value) (Value >0 && ~Value >0) 主要是通过将符号位取反然后将变量与0进行比较。传入int与unsigned int结果正确&#xff0c;但是当传入unsigned char 与unsign…...

Gpt-4多模态功能强势上线,景联文科技多模态数据采集标注服务等您来体验!

就在上个月&#xff0c;OpenAI 宣布对ChatGPT 进行重大更新&#xff0c;该模型不仅能够通过文字输入进行识别和分析&#xff0c;还能够通过语音、图像甚至视频等多种模态的输入来获取、识别、分析和输出信息。这一重要技术突破&#xff0c;将促进多模态自然语言处理的发展&…...

【idea】 java: 找不到符号

idea 启动时提示 java: 找不到符号 java: 找不到符号 符号: 方法 getCompanyDisputeCount() 位置: 类型为com.yang.entity.AreaAnalyse的变量 areaAnalyse 在setting ——> Compiler ——>Shared build process VM options: 添加&#xff1a; -Djps.track.ap.dep…...

Flink测试利器之DataGen初探 | 京东云技术团队

什么是 Flinksql Flink SQL 是基于 Apache Calcite 的 SQL 解析器和优化器构建的&#xff0c;支持ANSI SQL 标准&#xff0c;允许使用标准的 SQL 语句来处理流式和批处理数据。通过 Flink SQL&#xff0c;可以以声明式的方式描述数据处理逻辑&#xff0c;而无需编写显式的代码…...

linux更换常用软件的默认缓存路径(.conda, .huggingface等)

在使用linux的过程中&#xff0c;我们往往会使用软件安装很多packages&#xff0c;其中的大多数软件&#xff08;例如conda&#xff09;会把当前安装的packages缓存起来&#xff0c;以加速之后的相同package的安装。 而很多软件的默认缓存路径是user自己的home路径。下面罗列几…...

Kafka消费者使用案例

本文代码链接&#xff1a;https://download.csdn.net/download/shangjg03/88422633 1.消费者和消费者群组 在 Kafka 中&#xff0c;消费者通常是消费者群组的一部分&#xff0c;多个消费者群组共同读取同一个主题时&#xff0c;彼此之间互不影响。Kafka 之所以要引入消费者群组…...

SpringMVC全注解开发

在学习过程中&#xff0c;框架给我们最大的作用&#xff0c;就是想让开发人员尽可能地只将精力放在具体业务功能的实现之上&#xff0c;而对于各种映射关系的配置&#xff0c;统统由框架来进行完成&#xff0c;由此&#xff0c;注解就很好的将映射功能进行实现&#xff0c;并且…...

解决 android Cannot access ‘<init>‘: it is private in

最近要在2个非直接依赖module使用单例&#xff0c;有一种注入依赖的方式可以&#xff0c;但是报了如下错误&#xff1a; Cannot access <init>: it is private in 经过查阅资料&#xff0c;原来是依赖的单例类的构造函数不能使用private&#xff0c;这里做个记录&#…...

不容易解的题10.15

395.至少有K个重复字符的最长字串 395. 至少有 K 个重复字符的最长子串 - 力扣&#xff08;LeetCode&#xff09;https://leetcode.cn/problems/longest-substring-with-at-least-k-repeating-characters/description/?envTypelist&envIdZCa7r67M自认为是不好做的题。尤其…...

Megatron-LM GPT 源码分析(二) Sequence Parallel分析

引用 本文基于开源代码 https://github.com/NVIDIA/Megatron-LM &#xff0c;延续上一篇Megatron-LM GPT 源码分析&#xff08;一&#xff09; Tensor Parallel分析 通过对GPT的模型运行示例&#xff0c;从三个维度 - 模型结构、代码运行、代码逻辑说明 对其源码做深入的分析。…...

DNA序列(DNA Consensus String, ACM/ICPC Seoul 2006, UVa1368) rust解法

输入m个长度均为n的DNA序列&#xff0c;求一个DNA序列&#xff0c;到所有序列的总Hamming距离尽量小。两个等长字符串的Hamming距离等于字符不同的位置个数&#xff0c;例如&#xff0c;ACGT和GCGA的Hamming距离为2&#xff08;左数第1, 4个字符不同&#xff09;。 输入整数m和…...

如何使用Jmeter进行http接口测试?

前言&#xff1a; 本文主要针对http接口进行测试&#xff0c;使用Jmeter工具实现。 Jmter工具设计之初是用于做性能测试的&#xff0c;它在实现对各种接口的调用方面已经做的比较成熟&#xff0c;因此&#xff0c;本次直接使用Jmeter工具来完成对Http接口的测试。 一、开发接…...

bash一行输入,多行回显demo脚本

效果图&#xff1a; 脚本&#xff1a; #!/bin/bash # 定义一个变量&#xff0c;用来存储输入的内容 input"" # 定义一个变量&#xff0c;用来存储输入的字符 char""# 为了让read能读到空格键 IFS_store$IFS IFS# 提示内容&#xff0c;在while循环中也有&a…...

IDEA spring-boot项目启动,无法加载或找到启动类问题解决

问题描述&#xff1a;找不到或无法加载主类 xxx.xxx.xxx.Classname 解决方案&#xff1a; 1.检查启动设置&#xff1a; 启动类所在包运行环境&#xff08;一般选择默认即可&#xff09;设置完成即可进行运行测试 2.如果第一步没有解决问题&#xff0c;试着第二步&#xff1a…...

【LeetCode刷题(数据结构与算法)】:完全二叉树的节点个数

完全二叉树 的定义如下&#xff1a;在完全二叉树中&#xff0c;除了最底层节点可能没填满外&#xff0c;其余每层节点数都达到最大值&#xff0c;并且最下面一层的节点都集中在该层最左边的若干位置。若最底层为第 h 层&#xff0c;则该层包含 1~ 2h 个节点 输入&#xff1a;r…...

【代码随想录】算法训练营 第一天 第一章 数组 Part 1

目录 数组基础知识补充 704. 二分查找 题目 左闭右闭方法 思路 代码 左闭右开方法 思路 代码 27. 移除元素 题目 暴力解法 思路 代码 双指针法 思路 代码 数组基础知识补充 1. 在leecode中&#xff0c;数组一般是以vector容器的形式出现的&#xff0c;虽然ve…...

286_C++_定时器的其中一个操作,定时重载接口—startTimer循环执行回调(未完全)

1、启动一个定时器,允许在一定时间间隔内执行回调函数startTimer 1、接口函数参数详解 /*** @brief startTimer 定时重载接口* @param interval 定时器触发间隔,单位毫秒 (ms)* @param notify 定时时间到后需要触发的回调* @param type 回调驱动方…...

自动驾驶学习笔记(四)——变道绕行仿真

#Apollo开发者# 学习课程的传送门如下&#xff0c;当您也准备学习自动驾驶时&#xff0c;可以和我一同前往&#xff1a; 《自动驾驶新人之旅》免费课程—> 传送门 《2023星火培训【感知专项营】》免费课程—>传送门 文章目录 前言 仿真内容 启动Dreamview 开启Sim…...

C++位图,布隆过滤器

本期我们来学习位图&#xff0c;布隆过滤器等相关知识&#xff0c;以及模拟实现&#xff0c;需求前置知识 C-哈希Hash-CSDN博客 C-封装unordered_KLZUQ的博客-CSDN博客 目录 位图 布隆过滤器 海量数据面试题 全部代码 位图 我们先来看一道面试题 给 40 亿个不重复的无符号…...

Python多种方法实现九九乘法表

你好&#xff0c;我是悦创。 九九乘法表是一种常见的算术学习工具&#xff0c;通常用于帮助学生记住乘法的基本运算。以下是使用Python实现九九乘法表的几种方法&#xff1a; 1. 使用两个嵌套循环 for i in range(1, 10):for j in range(1, i 1):print(f"{j}x{i}{i * …...

【力扣1876】长度为三且各字符不同的子字符串

&#x1f451;专栏内容&#xff1a;力扣刷题⛪个人主页&#xff1a;子夜的星的主页&#x1f495;座右铭&#xff1a;前路未远&#xff0c;步履不停 目录 一、题目描述二、题目分析 一、题目描述 题目链接&#xff1a;长度为三且各字符不同的子字符串 如果一个字符串不含有任何…...

HSN:微调预训练ViT用于目标检测和语义分割,华南理工和阿里巴巴联合提出

今天跟大家分享华南理工大学和阿里巴巴联合提出的将ViT模型用于下游任务的高效微调方法HSN&#xff0c;该方法在迁移学习、目标检测、实例分割、语义分割等多个下游任务中表现优秀&#xff0c;性能接近甚至在某些任务上超越全参数微调。 论文标题&#xff1a;Hierarchical Side…...