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

news2024/9/24 1:25:18

 理论

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

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

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

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

#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这个条件 

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

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

相关文章

基于 STM32 的 MPU6050 姿态计算方法及应用

基于STM32的MPU6050姿态计算方法可以通过融合陀螺仪和加速度计的数据来实现。在本文中&#xff0c;我们将介绍通过MPU6050获取姿态数据&#xff0c;并结合姿态解算算法实现姿态估计的方法&#xff0c;并提供相应的代码示例。 1. 硬件连接及库配置 首先&#xff0c;我们需要将…

uniapp中uview组件库CircleProgress 圆形进度条丰富的使用方法

目录 #内部实现 #平台差异说明 #基本使用 #设置圆环的动画时间 #API #Props 展示操作或任务的当前进度&#xff0c;比如上传文件&#xff0c;是一个圆形的进度环。 #内部实现 组件内部通过canvas实现&#xff0c;有更好的性能和通用性。 #平台差异说明 AppH5微信小程…

静态网页课程设计——贾斯汀比伯歌手介绍(HTML+CSS+JavaScript)

前言 使用技术&#xff1a;HTMLCSSJS 主要内容&#xff1a;对贾斯汀比伯这名歌手进行介绍&#xff0c;还有他的几首比较经典的歌曲以及视频观看。 简单介绍 本网站是以介绍贾斯汀比伯为主题而展开&#xff0c;主要由首页、《Changes》和音乐视频组成的。首页下面的是对他介绍…

数据在内存中的存储方式

前言&#xff1a; 期末临近&#xff0c;继续复习&#xff01; 今天要复习的内容是数据在内存中的存储&#xff0c;主要是整型与浮点两种&#xff0c;还有大小端的介绍。 提出问题 打印结果是255 -1 为什么&#xff1f; 首先我们要知道数据都是以二进制的形式存…

智能的核心依然是哲学的三个基本问题

智能的发展与哲学的三个基本问题密切相关&#xff0c;作为一个复杂领域&#xff0c;智能涉及到人类认知和行为的模拟与复制&#xff0c;因而也会涉及到哲学的核心问题。 存在论&#xff1a;智能的存在论问题涉及到什么是智能以及智能系统的本质。这包括对于意识、思维和自主性的…

酷雷曼精彩亮相CMC 2023中国元宇宙大会,助力云上VR直播

12月23日&#xff0c;2023中关村论坛系列活动——CMC 2023中国元宇宙大会在石景山首钢园冰壶馆成功举办。酷雷曼VR作为元宇宙领域代表企业之一受邀出席会议&#xff0c;分享元宇宙技术研发成果及应用方案&#xff0c;并为大会提供VR直播技术支持。 大咖云集&#xff0c;共商元宇…

js逆向第13例:猿人学第6题js混淆-回溯赛

文章目录 m是加密字符串怎么来的?浏览器环境检测本地运行的js代码任务六:采集全部5页的彩票数据,计算全部中奖的总金额(包含一、二、三等奖) 此题总体难度低于第5题,老规矩还是查看控制台请求地址https://match.yuanrenxue.cn/api/match/6?m=rPRDgpbV3Wd%252FyPfURQAkxK…

Vue知识总结-中

VUE-生命周期 生命周期概述 生命周期也常常被称为生命周期回调函数/生命周期函数/生命周期钩子生命周期是Vue在关键时刻帮我们调用的一些特殊名称的函数生命周期函数的名字不能更改,但函数的具体内容是由我们程序员自己编写的生命周期函数中的this指向是vm或组件实例对象 生命周…

[VUE]5-TypeScript

目录 1 TypeScript 介绍2、安装3、快速上手4、TypeScript 常用类型4.1 类型标注的位置4.2 字符串、数字、布尔类型4.3 字面量类型4.4 ⭐interface 类型4.5 class 类型 ​&#x1f343;作者介绍&#xff1a;双非本科大三网络工程专业在读&#xff0c;阿里云专家博主&#xff0c;…

【Leetcode】移除后集合的最多元素数

目录 &#x1f4a1;题目描述 &#x1f4a1;思路 &#x1f4a1;总结 100150. 移除后集合的最多元素数 &#x1f4a1;题目描述 给你两个下标从 0 开始的整数数组 nums1 和 nums2 &#xff0c;它们的长度都是偶数 n 。 你必须从 nums1 中移除 n / 2 个元素&#xff0c;同时从 …

江科大STM32

目录 STM32简介 STM32简介 我们主要学习的就是STM32的外设。 NVIC&#xff1a;内核里面用于管理中断的设备&#xff0c;比如配置中断优先级这些东西SysTick&#xff1a;内核里面的定时器&#xff0c;主要用来给操作系统提供定时服务的&#xff0c;STM32是可以加入操作系统的&am…

SSD固态硬盘数据修复方案介绍

这么多故障的可能&#xff0c;那么固态硬盘SSD的数据修复&#xff0c;到底是否有办法呢&#xff1f;我们这里介绍两种尝试修复的方式&#xff0c;不能保证一定会成功。在你误删除一些文件的时候&#xff0c;可以尝试下&#xff0c;市场也有也有很多的修复软件。 方式1:采用修复…

【软件测试】概述

《软件缺陷》 定义 &#xff08;从产品内部看&#xff09;软件产品开发或维护过程中存在的错误、毛病等各种问题&#xff08;从产品外部看&#xff09;系统所需要实现的某种功能的失效或违背 表现形式(1) 软件没有实现产品规格说明所要求的功能模块(2) 软件中出现了产品规格说…

[ffmpeg系列 03] 文件、流地址(视频)解码为YUV

一 代码 ffmpeg版本5.1.2&#xff0c;dll是&#xff1a;ffmpeg-5.1.2-full_build-shared。x64的。 文件、流地址对使用者来说是一样。 流地址(RTMP、HTTP-FLV、RTSP等)&#xff1a;信令完成后&#xff0c;才进行音视频传输。信令包括音视频格式、参数等协商。 接流的在实际…

day10 用栈实现队列 用队列实现栈

题目1&#xff1a;232 用栈实现队列 题目链接&#xff1a;232 用栈实现队列 题意 用两个栈实现先入先出队列&#xff08;一个入栈&#xff0c;一个出栈&#xff09;&#xff0c;实现如下功能&#xff1a; 1&#xff09;push&#xff1a;将元素x推到队列末尾 2&#xff09;…

MyBatisPlus-基本配置与常见应用

MyBatisPlus 一、快速入门 MyBatis Plus是基于MyBatis的增强工具&#xff0c;提供了更简单、更便捷的方式来操作数据库。它是一个功能丰富的ORM&#xff08;对象关系映射&#xff09;框架&#xff0c;可以帮助开发人员更快速地进行数据库操作。 MyBatis Plus的主要特点如下&…

【知识点】:ECMAScript简介及特性

一.简介 什么是ECMAScript&#xff1f; ECMAScript是由网景的布兰登艾奇开发的一种脚本语言的标准化规范&#xff1b;最初命名为Mocha&#xff0c;后来改名为LiveScript&#xff0c;最后重命名为JavaScript。1995年12月&#xff0c;升阳与网景联合发表了JavaScript。1996年11月…

华为HarmonyOS 创建第一个鸿蒙应用 运行Hello World

使用DevEco Studio创建第一个项目 Hello World 1.创建项目 创建第一个项目&#xff0c;命名为HelloWorld&#xff0c;点击Finish 选择Empty Ability模板&#xff0c;点击Next Hello World 项目已经成功创建&#xff0c;接来下看看效果 2.预览 Hello World 点击右侧的预…

K8s-应用数据

应用数据 1 应用数据解析 k8s应用数据类型和步骤解析 k8s如何使用数据功能 k8s使用各种数据类型的配置 2 应用数据实践 emptyDir实践 资源对象文件内容 apiVersion: v1 kind: Pod metadata:name: sswang-emptydir spec:containers:- name: nginx-webimage: kubernetes-reg…

操作系统内存碎片

大家好&#xff0c;我叫徐锦桐&#xff0c;个人博客地址为www.xujintong.com&#xff0c;github地址为https://github.com/jintongxu。平时记录一下学习计算机过程中获取的知识&#xff0c;还有日常折腾的经验&#xff0c;欢迎大家访问。 一、前言 内存碎片是指无法被利用的内…