博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
交换两个整形变量的数值
阅读量:4343 次
发布时间:2019-06-07

本文共 1392 字,大约阅读时间需要 4 分钟。

一.构建swap函数,实现两个整型变量数值的交换,且使用指针类型的数据作为swap函数的参数。

1.代码实现:

1 #include
2 void swap(int *x,int *y) 3 { 4 int t; 5 t=*x; 6 *x=*y; 7 *y=t; 8 } 9 int main()10 {11 int a,b;12 scanf("%d%d",&a,&b);13 //输入要交换的两个整数a,b14 printf("The old : a=%d b=%d\n",a,b);15 swap(&a,&b);16 //交换a,b17 printf("The now : a=%d b=%d\n",a,b);18 }

2.运行结果:

3 5

The old : a=3 b=5
The now : a=5 b=3

--------------------------------

Process exited after 2.629 seconds with return value 0
请按任意键继续. . .

总结: 1.先输入a,b两个整数,在将a,b的地址传入函数swap中,将a,b进行交换。

         2.函数的参数必须是指针类型的,普通类型只能单向传递,指针类型可以实现双向传递。

二.void swap(int *p,int *q){int *m;*m=*p;*p=*q;*q=*m;}为何无法实现交换?

    swap函数中指针变量m并未赋值,也就是说m指向的是内存中的一个未知区域,可能破坏系统的正常工作状况。其根本原因是没有对m初始化。

三.void swap(int *p,int *q){int *m;m=p;p=q;q=m;}为何无法实现交换?

    C语言中实参变量和形参变量之间的数据传递是单向的值传递,指针变量也要遵循这一规则,但可以改变实参指针变量所指向变量的值。

四.构建comp函数,实现两个整数比较,比较大的值通过返回值返回给main。要求comp的参数和返回值都是指针类型数据。

    1.代码实现

1 #include
2 int *comp(int *x,int *y) 3 { 4 return *x>*y? x:y; 5 } 6 int main() 7 { 8 int a,b,*p; 9 scanf("%d%d",&a,&b);10 p=comp(&a,&b);11 printf("max=%d\n",*p);12 }

     2.运行结果

        2 6

        max=6

        --------------------------------

        Process exited after 2.955 seconds with return value 0
        请按任意键继续. . .

      3.总结:在指针类型的函数中,利用指针所指向值的大小比较,来决定返回哪个指针参数,在main函数中用指针变量来接收该指针参数,最后用*p打印p所指向的值。

    

转载于:https://www.cnblogs.com/2016024291-/p/6597168.html

你可能感兴趣的文章
ELK学习总结(1-3)倒排索引
查看>>
Progress and Prospect of target detection technology based on deep learning
查看>>
YUI Array 之dedupe(快速去重)
查看>>
javascript中parseInt函数的用法
查看>>
Linux文件结构及基本文件夹
查看>>
注册表使用总结
查看>>
python 函数(二)
查看>>
javascript小技巧:同步服务器时间、同步倒计时
查看>>
我该如何自学软件测试?
查看>>
20145201李子璇 《网络对抗》 Web安全基础实践
查看>>
Alpha 冲刺 (7/10)
查看>>
ORACLE__Linux下Oracle数据库的卸载、删除
查看>>
摆脱控件之新手2
查看>>
Dos命令
查看>>
C#中操作Excel文件
查看>>
SSH答疑解惑系列(二)——java.lang.reflect.InvocationTargetException异常
查看>>
IP地址与,域名,DNS服务器,端口号的联系与概念
查看>>
关于tar解压重命名的问题
查看>>
【C++11】第一篇:新关键字
查看>>
求先序排列
查看>>