首页 > 其他分享 >指针与函数

指针与函数

时间:2022-10-08 11:55:18浏览次数:40  
标签:p2 p1 函数 int scanf main 指针

1. 通过指针变量访问整型变量

#include <stdio.h>
int main()
{
    int a,b;
    int *p1,*p2;
    scanf("a=%d,b=%d",&a,&b);
    p1=&a;
    p2=&b;
    printf("*p1=%d,*p2=%d",*p1,*p2);
    return 0;
}

2.1 输入两个整数,按先大后小的顺序输出。
要求:用指针方法处理。不交换整型变量的值,而是交换两个指针变量的值。
法一:交换引用内容(自定义函数使用该种方法)

#include <stdio.h>
int main()
{
    int a,b,p;
    int *p1,*p2;
    scanf("%d%d",&a,&b);
    p1=&a;
    p2=&b;
    if(a<b)
    {
        p=*p1;
        *p1=*p2;
        *p2=p;
    }
    printf("%d %d",*p1,*p2);
    //printf("%d %d",a,b); 此时引用内容改变,a,b的值改变
    return 0;
}

法二:那交换地址呢?

#include <stdio.h>
int main()
{
    int a,b;
    int *p1,*p2,*p;
    scanf("%d%d",&a,&b);
    p1=&a;
    p2=&b;
    if(a<b)
    {
        p=p1;
        p1=p2;
        p2=p;
    }
    printf("%d %d",*p1,*p2);
    //printf("%d %d",a,b); 此时指针地址改变,a,b的值不变
    return 0;
}

2.2 输入两个整数,按先大后小的顺序输出。
要求:用函数处理,而且用指针类型的数据作函数参数,在函数中通过指针交换两个变量值。

#include <stdio.h>
int main()
{
    void swap(int *p1,int *p2);
    int a,b;
    scanf("%d%d",&a,&b);
    if(a<b)
    {
        swap(&a,&b);//这里传递地址给被调函数
    }
    printf("%d %d",a,b);
    return 0;
}
void swap(int *p1,int *p2)//这里定义指针变量
{
    int tmp;//这里不可定义野指针,来交换地址
    tmp=*p1;
    *p1=*p2;
    *p2=tmp;
}

3. 输入3个整数,按由大到小的顺序输出。
要求:用函数处理,且用指针做函数参数,实现交换两个数。

#include <stdio.h>
int main()
{
    void exchange(int *q1,int *q2,int *q3);
    int a,b,c;
    scanf("%d%d%d",&a,&b,&c);
    if((a<b)||(b<c)||(a<c))
    {
        exchange(&a,&b,&c);//将地址传给被调函数
    }
    printf("%d %d %d",a,b,c);
    return 0;
}
void exchange(int *q1,int *q2,int *q3)//定义指针变量
{
    void swap(int *pt1,int *pt2);
    if(*q1<*q2)
    {
        swap(q1,q2);
    }
    if(*q2<*q3)
    {
        swap(q2,q3);
    }
    if(*q1<*q2)//三个数比较大小,需要两趟;第一趟两次比较,第二趟一次比较
    {
        swap(q1,q2);
    }
}
void swap(int *pt1,int *pt2)
{
    int tmp;
    tmp=*pt1;
    *pt1=*pt2;
    *pt2=tmp;
}

-END

标签:p2,p1,函数,int,scanf,main,指针
From: https://www.cnblogs.com/peitongshi/p/16768489.html

相关文章

  • 攻防世界Web_php_unserialize(__wakeup函数绕过)
    <?phpclassDemo{private$file='index.php';publicfunction__construct($file){$this->file=$file;}function__destruct(){......
  • js高级ES6class构造函数与super继承
    <!DOCTYPEhtml><htmllang="en"><head> <metacharset="UTF-8"> <metahttp-equiv="X-UA-Compatible"content="IE=edge"> <metaname="viewport"content="width=......
  • JavaScript高级复习——构造函数和原型
    构造函数JavaScript的构造函数中可以添加一些成员,可以在构造函数本身上添加,也可以在构造函数内部的this上添加。通过这两种方式添加的成员,就分别称之为静态成员和实例成员......
  • [转]为什么VS提示SurfFeatureDetector不是cv的成员函数
    surf和sift算法都是在头文件#include<opencv2/features2d/features2d.hpp>中,但在新的opencv版本出来后,如果仍然使用这个头文件就会出现编译错误如下:'SurfFeatureDetector......
  • 网络字节序和主机字节序的转换函数实践
    1、什么是字节序计算机在储存数据时有两种储存数据的方式:大端字节序(bigendian)和小端字节序(littleendian)1.大端字节序(bigendian)大端字节序(bigendian)是将值的高位......
  • 常用的 函数式接口
    函数式接口:将注解@FunctionalInterface放在一个接口上,编译器会帮我们检查这个接口是否亿实业韩式接口 JDK提供的常见函数式接口:所在包:java.util.function ......
  • 基础06:聚合函数
    一、聚合函数介绍什么是聚合函数聚合函数作用于一组数据,并对一组数据返回一个值。聚合函数类型AVG();SUM();MAX();MIN();COUNT();1.1AVG和SUM函数可......
  • 基础05:单行函数
    一、函数的理解1.1什么是函数函数在计算机语言的使用中贯穿始终,函数的作用是什么呢?它可以把我们经常使用的代码封装起来,需要的时候直接调用即可。这样既提高了代码效......
  • 网络字节序与主机字节序的转换函数实践
    1#include<netinet/in.h>2unit16_thtons(uint16_thost16bitvalue);3uint32_thtonl(uint32_thost32bitvalue);//均返回网络字节序的值4unit16_tntohs(uint1......
  • 网络字节序与主机字节序的转换函数实践
    1、网络字节序:是TCP/IP中一种固定好的数据表示格式,它与具体的CPU,操作系统,传输方式无关,从而可以保证数据在不同主机之间传输时能够兼容。2、主机字节序:即大端(BigEndian)......