C语言中关于函数调用的理解

 理论

关于函数调用的方式有两类:传值调用传址调用

传值调用:函数的形参和实参分别占有不同的内存块,对形参的修改不会影响实参

传址调用:把函数外部创建变量的内存地址传递给函数参数的一种调用方式。可以让函数和函数外面的变量建立起真正的联系,也就是函数内部可以直接操作函数外部的变量

我们可以用一串代码来解释这两者的区别

#include<stdio.h>
int fun1(int a,int b)
{
    int c;
    c=a;
    a=b;
    b=c;
}
int fun2(int *pa,int *pb)
{
    int d;
    d=*pa;
    *pa=*pb;
    *pb=d;
}
void main(){
	int a=10,b=20;
    fun1(a,b);
    printf("a=%d,b=a%d\n",a,b);
    fun2(&a,&b);
    printf("a=%d,b=%d",a,b);
}

 在这串代码中,fun1是传值变量,fun2是传址变量,正如上面所说:

fun1内部的代码叫做形参,它里面的东西不会影响到主函数内实参的改变,所以在输出时,a,b没有改变

fun2内部的代码直接把a,b的内存地址拿过来了,相当于fun2中的变量与主函数里面的变量建立了联系,在fun2里面做修改就会影响到主函数里面相对变量的值,所以我们在fun2里面把a,b交换后,主函数中的a,b也受到了影响。


题目

打印100~300之间的素数

素数: 一个大于1的自然数,除了1和它自身外,不能被其他自然数整除的数叫素数

#include<stdio.h>
int fun(int i)
{
   


}
void main(){
	int i;
    for(i=100;i<=300;i++) {
        if (fun(i) == 1) {
            printf("%d ", i);
        }
    }
}

在写外部函数前,我们都应该先看一下主函数,然后根据主函数来理解外部函数中要让我们做什么

根据这个主函数我们可以知道,我们要在外部函数中判断100~300之间有哪些素数

首先,我们要用一个变量遍历一遍小于 i 的所有数,以此来看看有哪些数除了1和本身不能被其他自然数整除

遍历完之后,如果可以被其他自然数整除,那就return 0,否则,return 1。

具体代码如下:

int fun(int i)
{
    int a;
    for(a=2;a<i;a++) {

        if (i % a == 0)
            return 0;
    }
            return 1;
}

判断是否为闰年

基础规律:非整百年能被4整除而不能被100整除。 这是最基本的判断闰年的方法。

完备原则:整百年能被400整除而不能被3200整除。 

#include<stdio.h>
int fun(int i)
{
   


}
void main(){
	int i;
    for(i=1000;i<=2000;i++) {
        if (fun(i) == 1)
            printf("%d ", i);
    }
}

 通过主函数我们可以知道,外部函数是要判断是否为闰年

闰年的规则已经写在题目下方了,按照规则,我们可以得出这样一串代码

int fun(int i)
{
    if(i%4==0 && i%100!=0)
        return 1;
    else if(i%400==0)
        return 1;
    else
        return 0;
}

 这里整年和非整年要分别判断,所以我们要用到两个if

由于这里最高是2000,所以我在第二个if里面没有加上不等于3200这个条件 

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【ThreeJS入门——】WEB 3D可视化技术——threejs

简介 网页上已经可以做出很多复杂的动画&#xff0c;精美的效果。下图就是通过WebGL在网页中绘制高性能的3D图形。 threejs是一个让用户通过javascript入手进入搭建webgl项目的类库。 1、搭建第一个场景和物体 三维的物体要渲染在二维的屏幕上。首先要创建一个场景来放置物体…

源码编译部署篇(二)源码编译milvus成功后如何启动standalone并调试成功!

Milvus启动和调试 0 前言1 Milvus启动【问题描述】出现Aborted问题【问题分析】【解决方法】安装Pulsar服务执行单机启动命令解决监听端口号 2 Milvus调试编写launch.json验证单例调试成功 3 遇到的问题汇总问题1问题2:Permission denied 0 前言 由于Milvus官方文档只提及如何…

【LeetCode:228. 汇总区间 | 区间】

&#x1f680; 算法题 &#x1f680; &#x1f332; 算法刷题专栏 | 面试必备算法 | 面试高频算法 &#x1f340; &#x1f332; 越难的东西,越要努力坚持&#xff0c;因为它具有很高的价值&#xff0c;算法就是这样✨ &#x1f332; 作者简介&#xff1a;硕风和炜&#xff0c;…

FreeRTOS学习第6篇–任务状态挂起恢复删除等操作

目录 FreeRTOS学习第6篇--任务状态挂起恢复删除等操作任务的状态设计实验IRReceiver_Task任务相关代码片段实验现象本文中使用的测试工程 FreeRTOS学习第6篇–任务状态挂起恢复删除等操作 本文目标&#xff1a;学习与使用FreeRTOS中的几项操作&#xff0c;有挂起恢复删除等操作…

探索2024年软件测试的几大主导趋势

进入2024年&#xff0c;考虑影响测试环境的问题至关重要。这种思考将成为团队了解主要瓶颈和实现当今不断提高的期望的首要因素。 01 了解关键测试瓶颈 毋庸置疑&#xff0c;现代团队需要不断创新、适应和拥抱最新趋势&#xff0c;以保持竞争力并提供以客户为中心的解决方案。尽…

OpenGuass 之顺序扫描和索引扫描的代价估算

一. 前言 在OepnGuass中&#xff0c;一条路径的执行代价估算值将直接决定一条路径是否会被取舍。本文主要对OpenGuass中对于普通表的顺序扫描和索引扫描两种路径的的代价估算进行代码走读了解代价估算的整体过程。 二. 顺序扫描代价估算 顺序扫描的路径代价估算在OpenGuass中实…

【C++】- 类和对象(构造函数!析构函数!拷贝构造函数!详解)

类和对象② 类的6个默认成员函数构造函数析构函数拷贝构造函数 类的6个默认成员函数 上一篇详细介绍了类。如果一个类中什么成员都没有&#xff0c;简称为空类。 那么空类中真的什么都没有吗&#xff1f; 并不是&#xff0c;当类在什么都不写时&#xff0c;编译器会自动生成…

Mac 16g约等于Windows多少g?

Mac 16g 内存等于 Windows 320g 内存 何为“黄金内存”&#xff1f; Mac 的内存是用黄金做的&#xff0c;而 Windows 的内存是用铁做的。 黄金的密度是 19.32 g/cm&#xff0c;而铁的密度是 7.874 g/cm。 因此&#xff0c;16g 的黄金体积是 0.082 cm&#xff0c;而 16g 的铁…

CentOS设置docker静态ip

docker容器的ip地址在每次启动后启动顺序设置ip地址&#xff0c;为解决ip地址变动的问题&#xff0c;我们有必要设置docker内部ip地址固定。 第一步先创建一个本地ip地址固定容器的ip docker network create —driver bridge —subnet172.18.12.0/16 —gateway172.18.1.1 wn_d…

XCTF-Misc1 USB键盘流量分析

m0_01 附件是一个USB流量文件 分析 1.键盘流量 USB协议数据部分在Leftover Capture Data域中&#xff0c;数据长度为八个字节&#xff0c;其中键盘击健信息集中在第三个字节中。 usb keyboard映射表&#xff1a;USB协议中HID设备描述符以及键盘按键值对应编码表 2.USB…

【SpringCloud Alibaba笔记】(2)Sentinel实现熔断与限流

Sentinel 概述 官网&#xff1a;https://github.com/alibaba/Sentinel 中文文档&#xff1a;https://sentinelguard.io/zh-cn/docs/introduction.html 类似Hystrix&#xff0c;以流量为切入点&#xff0c;从流量路由、流量控制、流量整形、熔断降级、系统自适应过载保护、热…

w18认证崩溃之暴力破解DVWA

一、实验环境 攻击工具&#xff1a;burpsuite2021.12 靶场&#xff1a;DVWA二、实验目的 演示暴破DVWA的medium和high两个级别&#xff0c;low级别请查看w18认证崩溃之暴力破解4种攻击模式 三、实验步骤 1.设置靶场medium级别 2.开启谷歌代理插件&#xff0c;开启bp拦截&…

多时点DID

标准 DID 模型一般针对政策实施时点为同一个时期&#xff0c;且接受干预的状态将一直持续下去&#xff0c;否则 的交互项设置将会严重违背平行趋势的假设&#xff0c;从而导致交互项的估计系数有偏。由于现实世界中很多的政策试点地区和时间都不尽相同&#xff0c;而且也容易发…

霍兰德职业兴趣测试 60题(免费版)

霍兰德职业兴趣理论从兴趣的角度出发探索职业指导的问题&#xff0c;明确了职业兴趣的人格观念&#xff0c;使得人们对于职业兴趣的认识有了质的变化。在霍兰德职业兴趣理论提出来之前&#xff0c;职业兴趣和职业环境二者分别独立存在&#xff0c;正是霍兰德的总结&#xff0c;…

test dbtest-00-数据库测试

拓展阅读 DbUnit-01-数据库测试工具入门介绍 database tool-01-flyway 数据库迁移工具介绍 数据库测试一直是一个痛点&#xff0c;测试的时候如何针对数据库测试呢? 数据库测试是确保数据库系统正确性、性能和可靠性的重要环节。以下是一些建议&#xff0c;可帮助您有效地…

跟着小德学C++之安全模块

嗨&#xff0c;大家好&#xff0c;我是出生在达纳苏斯的一名德鲁伊&#xff0c;我是要立志成为海贼王&#xff0c;啊不&#xff0c;是立志成为科学家的德鲁伊。最近&#xff0c;我发现我们所处的世界是一个虚拟的世界&#xff0c;并由此开始&#xff0c;我展开了对我们这个世界…

PPT模板(100套IT科技互联网风)

哈喽&#xff0c;小伙伴们&#xff0c;最近是不是都在准备年终总结、年终述职&#xff0c;一个好的PPT模板是编写报告的开端。我最近也在准备年终总结报告&#xff0c;一块整理了一些PPT模板。这些模板适用于各种IT科技互联网相关的场合&#xff0c;如产品发布会、项目提案、工…

Python和Java环境搭建

小白搭建全流程 首先不建议装在C盘&#xff0c;一旦重置电脑&#xff0c;之前安装第三方包需要重新安装 relolver :解释器 1、Python解释器安装 资源包&#xff1a; 1、 python -version java -version–用于查看是否安装 where python whrer java–用于查看安装的位置【非常…

【数据库】聊聊常见的索引优化-下

分页查询优化 主键排序 在实际的使用中&#xff0c;通过limit 10000,10 查询第10000记录到10010记录&#xff0c;mysql执行的时候是按照将前10010记录全部统计出来&#xff0c;然后剔除前10000条记录&#xff0c;选择后10条记录。这样来看的话&#xff0c;效率不高。 如果数据…

【C++】upper_bound和lower_bound

一个是返回第一个大于等于val的element的iter&#xff0c;另一个是返回第一个大于val的element的iter