使用指针交换数字

CCBeginner
立即练习

💡 本教程由 AI 辅助翻译自英文原版。如需查看原文,您可以 切换至英文原版

介绍

在 C 语言编程中,你可以使用指针来交换两个数字。指针是 C 语言中的强大特性,它允许我们通过存储和访问地址来操作数据,而不是直接操作实际值。在这个实验中,我们将学习如何使用指针来交换两个数字。

注意:你需要自己创建文件 ~/project/main.c 来练习编码,并学习如何使用 gcc 编译和运行它。

cd ~/project
## 创建 main.c
touch main.c
## 编译 main.c
gcc main.c -o main
## 运行 main
./main

Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL c(("`C`")) -.-> c/BasicsGroup(["`Basics`"]) c(("`C`")) -.-> c/PointersandMemoryGroup(["`Pointers and Memory`"]) c(("`C`")) -.-> c/UserInteractionGroup(["`User Interaction`"]) c/BasicsGroup -.-> c/variables("`Variables`") c/PointersandMemoryGroup -.-> c/pointers("`Pointers`") c/PointersandMemoryGroup -.-> c/memory_address("`Memory Address`") c/UserInteractionGroup -.-> c/user_input("`User Input`") c/UserInteractionGroup -.-> c/output("`Output`") subgraph Lab Skills c/variables -.-> lab-123350{{"`使用指针交换数字`"}} c/pointers -.-> lab-123350{{"`使用指针交换数字`"}} c/memory_address -.-> lab-123350{{"`使用指针交换数字`"}} c/user_input -.-> lab-123350{{"`使用指针交换数字`"}} c/output -.-> lab-123350{{"`使用指针交换数字`"}} end

声明变量

首先,声明两个整数变量 ab。然后,声明两个整数指针 ptraptrb,它们将分别保存变量 ab 的地址。最后,声明一个整数变量 temp,用于在交换过程中临时保存 ab 的值。

#include <stdio.h>

int main()
{
    int a, b;
    int *ptra, *ptrb;
    int temp;

    /* Your code here */

    return 0;
}

读取输入

接下来,从用户输入中读取 ab 的值。

#include <stdio.h>

int main()
{
    int a, b;
    int *ptra, *ptrb;
    int temp;

    printf("Enter value for a: ");
    scanf("%d", &a);

    printf("Enter value for b: ");
    scanf("%d", &b);

    /* Your code here */

    return 0;
}

打印原始值

打印 ab 的原始值。

#include <stdio.h>

int main()
{
    int a, b;
    int *ptra, *ptrb;
    int temp;

    printf("Enter value for a: ");
    scanf("%d", &a);

    printf("Enter value for b: ");
    scanf("%d", &b);

    printf("Original values: a = %d, b = %d\n", a, b);

    /* Your code here */

    return 0;
}

获取地址

通过将 ab 的地址分别赋值给 ptraptrb,获取它们的地址。

#include <stdio.h>

int main()
{
    int a, b;
    int *ptra, *ptrb;
    int temp;

    printf("Enter value for a: ");
    scanf("%d", &a);

    printf("Enter value for b: ");
    scanf("%d", &b);

    printf("Original values: a = %d, b = %d\n", a, b);

    ptra = &a;
    ptrb = &b;

    /* Your code here */

    return 0;
}

交换两个数字

使用指针交换 ab 的值。

#include <stdio.h>

int main()
{
    int a, b;
    int *ptra, *ptrb;
    int temp;

    printf("Enter value for a: ");
    scanf("%d", &a);

    printf("Enter value for b: ");
    scanf("%d", &b);

    printf("Original values: a = %d, b = %d\n", a, b);

    ptra = &a;
    ptrb = &b;

    temp = *ptra;
    *ptra = *ptrb;
    *ptrb = temp;

    /* Your code here */

    return 0;
}

打印交换后的值

打印交换后的 ab 的值。

#include <stdio.h>

int main()
{
    int a, b;
    int *ptra, *ptrb;
    int temp;

    printf("Enter value for a: ");
    scanf("%d", &a);

    printf("Enter value for b: ");
    scanf("%d", &b);

    printf("Original values: a = %d, b = %d\n", a, b);

    ptra = &a;
    ptrb = &b;

    temp = *ptra;
    *ptra = *ptrb;
    *ptrb = temp;

    printf("Swapped values: a = %d, b = %d\n", a, b);

    return 0;
}

编写完整代码

程序的完整代码如下:

#include <stdio.h>

int main()
{
    int a, b;
    int *ptra, *ptrb;
    int temp;

    printf("Enter value for a: ");
    scanf("%d", &a);

    printf("Enter value for b: ");
    scanf("%d", &b);

    printf("Original values: a = %d, b = %d\n", a, b);

    ptra = &a;
    ptrb = &b;

    temp = *ptra;
    *ptra = *ptrb;
    *ptrb = temp;

    printf("Swapped values: a = %d, b = %d\n", a, b);

    return 0;
}

总结

在这个实验中,我们学习了如何使用指针交换两个数字。我们声明了两个整数变量和两个整数指针,然后通过将变量的地址赋值给指针来获取它们的地址。最后,我们使用指针交换了两个变量的值。

您可能感兴趣的其他 C 教程