CC3-编写函数实现两数交换(指针方式)
本文实现了一个通过指针交换两个整数的程序。代码包含swap函数和main函数:swap函数使用指针参数接收变量地址,通过临时变量temp完成值的交换;main函数初始化变量、读取用户输入、调用swap函数并输出结果。该程序逻辑正确,能有效实现整数交换功能。建议可添加输入验证以提高健壮性,但当前版本已满足基本需求。
·
😁博客主页😁:🚀从0至1-CSDN博客🚀
🤑博客内容🤑:🍭C语言、C++、数据结构、嵌入式、Linux🍭

文章目录
实现了一个使用指针交换两个整数的函数,我会逐步拆解代码结构、功能和工作原理,确保解释清晰易懂。代码本身逻辑正确,能实现输入两个整数并交换后输出的功能。
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* a和int* b),交换它们指向的值。 - 工作原理:
int temp = *a;:创建一个临时变量temp,存储指针a指向的值(即变量a的当前值)。*a = *b;:将指针b指向的值赋给指针a指向的地址,覆盖原值。*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; // 程序正常结束
}
- 功能:主函数负责输入、调用交换函数和输出结果。
- 工作流程:
- 初始化变量
a和b为0。 - 使用
scanf读取用户输入的两个整数,通过&a和&b获取变量地址。 - 调用
swap(&a, &b),传递变量地址,让函数直接修改值。 - 使用
printf输出交换后的结果。
- 初始化变量
- 输入输出示例:如输入
2和3,输出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;
}

更多推荐



所有评论(0)