• c语言:当指针成为参数后


    指针就是一种指向内存地址的变量,利用它的一些特性我们可以完成很多工作

    • 两个数字从小到大排序(引申的业务场景,对企业大佬的银行存款金额进行排序,这当然通过交换变量对应的数值来实现,否则盖茨大爷的钱可能全交换到我的账户下来,靠谱的做法是声明(或者说引入)指针变量,用来按照从小到大的顺序标的(指向)不同账户下的金额)
    #include<stdio.h>
    #include<stdlib.h>
    void main()
    {
        double *pa, *pb,*tmp;
        double a, b;
    
        printf("请输入两个数,排列其大小
    ");
        printf("输入金额1");
        scanf_s("%lf",&a);
        printf("输入金额2");
        scanf_s("%lf",&b);
        pa = &a;
        pb = &b;
        if (*pb < *pa)
        {
            tmp = pa;
            pa = pb;
            pb = tmp;
        }
        printf("从小到大顺序%f,%f",*pa,*pb);
        system("pause");
    }
    • 指针作为参数
    #include<stdio.h>
    #include<stdlib.h>
    
    void arrayasparam(int a[10])
    {
        printf("
    数组作为参数的大小%d", sizeof(a[10]));
        //输出的值为4,这可以算是以形式参数传值的一个特例:a[10]实际上是a这个数组首元素的地址,指针变量长度为4,无论他是整型数组指针还是浮点亦或是字符数组
        for (int i = 0; i < 10; i++)
        {
            a[i] = 9 - i;
            printf("元素逆序之:%d
    ",a[i]);
        }
    }
    
    void fakeparam(int mynum)
    {
        mynum = 10;
    }
    
    void needleparam(int *mynum)
    {
        *mynum = 10;
    }
    
    void main()
    {
        int num[10] = {0,1,2,3,4,5,6,7,8,9};
        printf("num数组的长度是%d
    ",sizeof(num));
        arrayasparam(num);
        int a = 66;
        fakeparam(a);
        printf("a的值是%d
    ", a);
        needleparam(&a);
        printf("a的值是%d
    ", a);//这个厉害,按照地址按图索骥完成了值的修改
        system("pause");
    }
  • 相关阅读:
    Norton我错怪了你啊~~
    RUNRMTCMD命令使用
    如何查看QTEMP的内容?可以查看别人的QTEMP的
    关于文件的ShareODP和USROPN
    虚拟主机权限之log4net
    如何向远程系统提交命令?
    在5250上面实现复制粘贴
    php与数据库对应实体类的命名
    Action Script 中的 super
    Linux下源码编译方式安装MySQL5.5.12(转)
  • 原文地址:https://www.cnblogs.com/saintdingspage/p/11941591.html
Copyright © 2020-2023  润新知