与函数交换变量不会影响调用站点

2023-11-29

几节课前,我学习了变量,并在作业中遇到了一个关于交换两个数字的问题 - 我使用了第三个变量来解决这个问题。

解决方案看起来有点像这样:

#include <stdio.h>

int main(void) {
    int x, y;
    scanf("%d %d", &x, &y);

    // swappring the values

    int temp = x;
    x = y;
    y = temp;

    printf("X is now %d and Y is now %d", x, y);
}

现在我正在学习函数,我想尝试用辅助交换函数解决前面的问题。

这是我写的代码:

#include <stdio.h>

void swap(int x, int y) {
    int temp = x;
    x = y;
    y = temp;
}

int main(void) {
    int a = 3, b = 4;
    swap(a, b);

    printf("%d %d\n", a, b);
}

不知道为什么,输出还是这样3 4即使我改变了里面的值swap()功能。

为什么会发生这种情况?


传递地址x and y作为函数的参数。现在它们是局部变量,不会对原始变量进行更改。

执行以下操作-

void swap(int *x,int *y){
 /*            dereference pointers and  swap    */
 int temp = *x;
 *x = *y;
 *y = temp;
}

并致电main像这样 -

swap(&x,&y);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

与函数交换变量不会影响调用站点 的相关文章

随机推荐

  • Java 重新排列枚举数组

    我想知道如何重新排序枚举 以便所有山羊都位于数组的开头 所有绵羊都位于数组的末尾 现在它实际上已经达到了目的 但是直到数组大小 gt 100 重新排序速度也很重要 因此 api 方法有点太慢了 有什么建议么 public class She
  • 如何让 SAXParser 忽略转义码

    我正在编写一个Java程序来读取XML文件 实际上是一个XML plist格式的iTunes库 我已经设法绕过了这种格式遇到的大多数障碍 除非遇到包含以下内容的文本 XML 文件将该 符号表示为 38 我只能设法阅读下面的文字 38 在文本
  • 在 Codeigniter 中对 WHERE 子句进行分组

    我想使用 Codeigniter 中的 Active Records 生成以下 SQL 代码 WHERE name Joe AND age lt 69 OR id gt 50 执行以下操作似乎是我所能做到的 我不知道如何对它们进行分组 th
  • 进行并行阶段的最佳方法?

    我想并行暂存文件并同时提交到不同的分支 将会有多个同时访问 repo Index Stage repo Commit API 在同一当前目录上工作 所以我认为这是不可能的 你们能给我一些关于如何实现这一目标的建议吗 一个总体想法 从可行性角
  • Jquery getJSON 未捕获的语法错误:意外的标记:错误

    我正在尝试连接到RubyGems API 但是当我尝试获取 JSON 时 出现了一个奇怪的错误 Uncaught SyntaxError Unexpected token 我在其他问题和帖子中看到了这个错误 但没有一个对我有用 这是我的 g
  • ValueError:无法使用 isin 和 pandas 从重复轴重新索引

    我试图将邮政编码缩短到各种文件中 但我不断收到 ValueError 无法从重复轴重新索引 我已经阅读了 Stackoverflow 上的其他文档 但我还没有打算弄清楚为什么它的重复轴 import csv import pandas as
  • 如何正确使用express-fileupload

    我正在尝试整合express fileupload将图像上传到我的服务器 我已按照此链接中提供的示例进行操作 快速文件上传示例但它不起作用 下面我列出了仅涉及相关代码行的每个文件 索引 ejs 相关线路
  • bash 中的 perl:如何在保存在字符串中的脚本上调用 perl

    我需要在不同的文件上多次执行相同的 perl 脚本 为了简化这个过程 我尝试将 perl 脚本保存为 bash 字符串 并在字符串上调用 perl 如下面代码的 不起作用 部分所示 bin sh works perl e print 1 d
  • 对于任何双精度浮点数,可以以“%1.17g”格式打印的最长字符串是多少?

    我正在维护一个 C json 库 我需要知道 sprintf 使用 1 17g 格式字符串输出的最大字符数是多少 目前我正在分配 1100 字节 基于表示任何双精度值所需的最大字符长度是多少 这看起来很浪费 如果我理解正确的话 它不应超过
  • 对象映射器读取值

    我加载一个资源文件json 与文本格式 sources prop1 1 prop2 2 prop1 1 prop2 2 redirection prop1 1 prop2 2 我有一个具有此属性 prop1 和 prop2 的类 我想用 O
  • 在 RPi 3 上运行的 Windows IoT 上的 Entity Framework Core(控制台应用程序)

    我成功地将 NET Core 控制台应用程序部署到在 Raspberry Pi 3 上运行的 Windows IoT 该应用程序从 Web 服务中提取数据并将其存储在数据库中 我为此使用了 Entity Framework Core 当我通
  • Silverlight 和 SSL 客户端证书

    谁能指出我如何使用 SSL 客户端证书与 Silverlight 访问宁静的 Web 服务的正确方向 我似乎找不到任何关于如何处理它们的信息 甚至找不到它们是否受支持的信息 Cheers Slipjig 提到了这一点 如果你愿意接受浏览器堆
  • 如何在 Xcode 中用 + 替换空格

    我正在构建一个应用程序 其中有很多从 MySQL 服务器调用的 URL 我需要为我的应用程序做的是获取文本字段文本并发送它 我已经知道该怎么做 但我需要用 加号 替换空格 尝试使用字符串方法 NSString stringByReplaci
  • 允许在 Django 项目中同时使用电子邮件和用户名登录

    我正在为一所学校创建一个 Django 项目 主要有三类用户 家长 教师和学生 对于家长和老师 我希望他们使用电子邮件登录 他们目前正在使用旧系统的电子邮件登录 然而 对于学生来说 我希望他们使用传统的用户名方法登录 因为年幼的孩子没有电子
  • 为什么 C++ 中的 set::end 迭代器取消引用集合中的元素数量?

    在 C STL 中 set end 返回一个指向 set 容器的最后一个元素的迭代器 由于它不引用有效元素 因此无法取消引用 end 函数返回双向迭代器 但是当我执行以下代码时 set
  • GCE 上的 Python:连接失败,因为连接的主机未能响应

    我一直在从事一个项目 该项目需要在服务器 托管在 GCE 上 和多个客户端之间进行一些网络连接 我创建了一个计算引擎实例来运行 Python 脚本 如本视频所示 https www youtube com watch v 5OL7fu2R4
  • 如何从 PHP 中的 UTF8 字符中“删除变音符号”?

    我需要复制 MySQL 的行为utf8 general ciPHP 中的排序规则 严格来说 我需要检测哪些内容被视为不同 哪些内容被视为相同 与案例无关的部分很简单 问题是utf general ci认为带变音符号的字符和不带变音符号的字符
  • 在 WinMain 之外使用 CreateWindowEX 函数时,如何获取它的 HINSTANCE?

    当我单击主窗口上的按钮时 我尝试创建一个弹出窗口 并且我正在使用 CreateWindowEX 函数来实现此目的 但是 CreateWindowEx 函数接收 HINSTANCE 类型变量作为其倒数第二个参数 鉴于我在单击按钮时从 WndP
  • 某事:某事:某事 方法格式?

    void alertView UIAlertView alertView clickedButtonAtIndex NSInteger buttonIndex do stuff if you want the alert to close
  • 与函数交换变量不会影响调用站点

    几节课前 我学习了变量 并在作业中遇到了一个关于交换两个数字的问题 我使用了第三个变量来解决这个问题 解决方案看起来有点像这样 include