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");
}
原文地址:https://www.cnblogs.com/saintdingspage/p/11941591.html