😁博客主页😁:🚀从0至1-CSDN博客🚀
🤑博客内容🤑:🍭C语言、C++、数据结构、嵌入式、Linux🍭

文章目录 

1. 代码功能概述

2. 代码结构解析

swap函数

main函数

3. 代码正确性评估

4. 总结


实现了一个使用指针交换两个整数的函数,我会逐步拆解代码结构、功能和工作原理,确保解释清晰易懂。代码本身逻辑正确,能实现输入两个整数并交换后输出的功能。

1. 代码功能概述

  • 问题描述:编写一个函数,通过指针交换两个整数的值。
  • 输入:用户输入两个整数(例如,2和3)。
  • 输出:交换后的整数(例如,3和2)。
  • 实现方式:使用指针参数传递变量的地址,在函数内部修改值。

2. 代码结构解析

代码主要包含两个部分:swap函数和main函数。以下是逐行解释:

swap函数
void swap(int* a, int* b)
{
    int temp = *a;  // 临时存储指针a指向的值
    *a = *b;        // 将指针b指向的值赋给指针a指向的地址
    *b = temp;      // 将临时存储的值赋给指针b指向的地址
}
  • 功能:这个函数接收两个整数指针(int* aint* b),交换它们指向的值。
  • 工作原理
    1. int temp = *a;:创建一个临时变量temp,存储指针a指向的值(即变量a的当前值)。
    2. *a = *b;:将指针b指向的值赋给指针a指向的地址,覆盖原值。
    3. *b = temp;:将临时变量temp的值赋给指针b指向的地址,完成交换。
  • 关键点:使用指针直接操作内存地址,避免了值传递的局限性(值传递只会复制值,无法修改原变量)。
main函数
int main()
{
    int a = 0;  // 初始化整数变量a
    int b = 0;  // 初始化整数变量b

    scanf("%d", &a);  // 读取用户输入的第一个整数,存储到a的地址
    scanf("%d", &b);  // 读取用户输入的第二个整数,存储到b的地址

    swap(&a, &b);  // 调用swap函数,传递a和b的地址

    printf("%d %d", a, b);  // 输出交换后的a和b值

    return 0;  // 程序正常结束
}
  • 功能:主函数负责输入、调用交换函数和输出结果。
  • 工作流程
    1. 初始化变量ab为0。
    2. 使用scanf读取用户输入的两个整数,通过&a&b获取变量地址。
    3. 调用swap(&a, &b),传递变量地址,让函数直接修改值。
    4. 使用printf输出交换后的结果。
  • 输入输出示例:如输入23,输出3 2,符合要求。

3. 代码正确性评估

  • 优点
    • 指针使用正确:通过传递地址,函数能修改原变量值。
    • 逻辑清晰:交换过程简洁高效,无冗余代码。
    • 符合要求:实现了输入输出描述的功能。
  • 潜在改进建议(非必需,但可提升健壮性):
    • 输入验证:添加检查scanf返回值,防止无效输入(如非整数)。例如:
      if (scanf("%d", &a) != 1) {
          printf("输入错误,请输入整数\n");
          return 1; // 错误退出
      }
      
    • 代码简洁性:可以将两个scanf合并为一行,如scanf("%d %d", &a, &b);
    • 错误处理:在真实应用中,考虑指针为NULL的情况,但本示例中未涉及。

4. 总结

您的代码完全实现了通过指针交换两个整数的功能,结构合理且高效。如果您有特定问题(如调试、扩展功能或优化),请提供更多细节,我可以进一步协助!

#define _CRT_SECURE_NO_WARNINGS

/* 2026年1月12日11:22:07

描述
编写一个函数,实现两个整数的交换,要求采用指针的方式实现。
输入描述:
键盘输入2个整数 m 和 n
输出描述:
输出交换后m 和 n 的值,中间使用空格隔开
示例1
输入:
2
3
输出:
3 2

*/

//# include <stdio.h>
////交换函数
//void swap(int* a, int* b)
//{
//	int i = *a;//save a value
//	*a = *b;//save b value to a
//	*b = i;//save i value to i
//}
//
//int main()
//{
//	//gets a and b value
//	int a = 0;
//	int b = 0;
//	scanf("%d", &a);
//	scanf("%d", &b);
//
//	//swab a and b with function
//	swap(&a, &b);
//
//	printf("%d %d", a, b);
//
//	return 0;
//}

#include <stdio.h>

// Swap two integers by using pointer parameters-参数
void swap(int* a, int* b)
{
    int temp = *a;  // Store-存放 the value pointed to by pointer a temporarily-暂时的
    *a = *b;        // Assign-分配,指派 the value pointed to by pointer b to the address pointed to by a
    *b = temp;      // Assign the temporarily stored value to the address pointed to by b
}

int main()
{
    // Initialize-初始化 two integer variables-变量 to store input values
    int a = 0;
    int b = 0;

    // Read two integer-整数 values from user input
    scanf("%d", &a);
    scanf("%d", &b);

    // Call the swap function to exchange the values of the two integers
    swap(&a, &b);

    // Print the swapped integer values
    printf("%d %d", a, b);

    return 0;
}

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐