📜  C测验– 111 |问题5(1)

📅  最后修改于: 2023-12-03 15:30:15.369000             🧑  作者: Mango

C测验 – 111 | 问题5

在这篇文章中,我们将讨论C测验 – 111中的问题5,这是一道关于C语言指针的问题。我们将会涵盖相关的知识点和解题思路。

问题描述

给定以下代码片段:

#include <stdio.h>

void swap(int *a, int *b)
{
    int tmp = *a;
    *a = *b;
    *b = tmp;
}

int main(void)
{
    int a = 10, b = 20;
    int *p1, *p2;
    p1 = &a;
    p2 = &b;
    swap(p1, p2);
    printf("a = %d, b = %d\n", a, b);
    return 0;
}

请问,上述代码的输出结果是什么?

(A) a = 10, b = 20

(B) a = 20, b = 10

(C) 程序会崩溃

(D) 输出结果无法预测

解题思路

该代码主要包含两个函数,一个是swap函数和一个main函数。在main函数中我们定义了两个整型变量ab,并分别初始化为10和20。接着,我们定义了两个指针变量p1p2,分别指向ab的地址。然后,我们调用swap函数,将指针p1p2传递给该函数。在swap函数中,我们使用了指针来交换它们所指向的值。最后,在main函数中,我们通过printf函数来输出ab的值。

关于指针的使用,我们需要记住一些关键点。首先,指针是一个变量,其值表示另一个变量的地址。其次,通过指针可以访问变量的值,这就是所谓的“解引用”。

在本例中,我们将指针p1p2传递给swap函数时,它们所指向的地址分别为ab。在swap函数中,我们交换了p1p2所指向的值,也就是ab的值。因此,a的值变为了20,b的值变为了10。

因此,本题的输出结果应该是:

a = 20, b = 10

答案为选项(B)。

总结

在C语言中,指针是一种非常重要的数据类型。可以使用指针来访问和修改变量的值,以及动态分配内存。在本题中,我们讨论了指针的使用以及如何交换两个变量的值。这是一个非常基础的问题,但需要对指针的使用有一定的了解。希望本文可以帮助您深入理解指针的使用和运作方式。