• 交换两个整形变量的数值


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

    1.代码实现:

     1 #include<stdio.h>
     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,b
    14      printf("The old : a=%d  b=%d
    ",a,b);
    15      swap(&a,&b);
    16      //交换a,b
    17      printf("The now : a=%d  b=%d
    ",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<stdio.h>
     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
    ",*p);
    12 }

         2.运行结果

            2 6
            max=6

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

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

        

  • 相关阅读:
    java基础篇6之代理
    JavaWeb 过滤器应用之页面静态化
    JavaWeb 之过滤器
    JavaWeb 之监听器
    分页
    Linux 入门
    多条件组合查询
    Service 事务(JdbcUtils 升级)
    BaseServlet 介绍
    dbUtils 工具类介绍
  • 原文地址:https://www.cnblogs.com/2016024291-/p/6597168.html
Copyright © 2020-2023  润新知