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

  • 两个数字从小到大排序(引申的业务场景,对企业大佬的银行存款金额进行排序,这当然通过交换变量对应的数值来实现,否则盖茨大爷的钱可能全交换到我的账户下来,靠谱的做法是声明(或者说引入)指针变量,用来按照从小到大的顺序标的(指向)不同账户下的金额)
#include<stdio.h>
#include<stdlib.h>
void main()
{
double *pa, *pb,*tmp;
double a, b; printf("请输入两个数,排列其大小\n");
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[])
{
printf("\n数组作为参数的大小%d", sizeof(a[]));
//输出的值为4,这可以算是以形式参数传值的一个特例:a[10]实际上是a这个数组首元素的地址,指针变量长度为4,无论他是整型数组指针还是浮点亦或是字符数组
for (int i = ; i < ; i++)
{
a[i] = - i;
printf("元素逆序之:%d\n",a[i]);
}
} void fakeparam(int mynum)
{
mynum = ;
} void needleparam(int *mynum)
{
*mynum = ;
} void main()
{
int num[] = {,,,,,,,,,};
printf("num数组的长度是%d\n",sizeof(num));
arrayasparam(num);
int a = ;
fakeparam(a);
printf("a的值是%d\n", a);
needleparam(&a);
printf("a的值是%d\n", a);//这个厉害,按照地址按图索骥完成了值的修改
system("pause");
}

c语言:当指针成为参数后的更多相关文章

  1. 【嵌入式开发】C语言 内存分配 地址 指针 数组 参数 实例解析

    . Android源码看的鸭梨大啊, 补一下C语言基础 ... . 作者 : 万境绝尘 转载请注明出处 : http://blog.csdn.net/shulianghan/article/detai ...

  2. C语言 内存分配 地址 指针 数组 参数 实例解析

    . Android源码看的鸭梨大啊, 补一下C语言基础 ... . 作者 : 万境绝尘 转载请注明出处 : http://blog.csdn.net/shulianghan/article/detai ...

  3. C语言:通过函数指针来完成两个数的加减乘除(函数指针当做参数使用)

    // //  main.c //  Function_pointer // //  Created by mac on 15/8/2. //  Copyright (c) 2015年. All rig ...

  4. iOS开发系列--C语言之指针

    概览 指针是C语言的精髓,但是很多初学者往往对于指针的概念并不深刻,以至于学完之后随着时间的推移越来越模糊,感觉指针难以掌握,本文通过简单的例子试图将指针解释清楚,今天的重点有几个方面: 什么是指针 ...

  5. C#委托与C语言函数指针及函数指针数组

    C#委托与C语言函数指针及函数指针数组 在使用C#时总会为委托而感到疑惑,但现在总新温习了一遍C语言后,才真正理解的委托. 其实委托就类似于C/C++里的函数指针,在函数传参时传递的是函数指针,在调用 ...

  6. C语言二重指针与malloc

    (内容主要源于网上,只是加入了些自己的剖析) 假设有一个二重指针: char **p; 同时有一个指针数组 char *name[4]; 如何引用p呢? 首先我们有程序代码如下 #include &l ...

  7. C语言函数指针基础

    本文写的非常详细,因为我想为初学者建立一个意识模型,来帮助他们理解函数指针的语法和基础.如果你不讨厌事无巨细,请尽情阅读吧. 函数指针虽然在语法上让人有些迷惑,但不失为一种有趣而强大的工具.本文将从C ...

  8. C语言中的可变参数-printf的实现原理

    C语言中的可变参数-printf的实现原理 在C/C++中,对函数参数的扫描是从后向前的.C/C++的函数参数是通过压入堆栈的方式来给函数传参数的(堆栈是一种先进后出的数据结构),最先压入的参数最后出 ...

  9. go语言之指针

    package main import "fmt" //指针 //go语言的指针是非常容易学习的,比c中容易很多,他可以更简单的执行一些任务 //与变量类型,使用前需要定义 fun ...

随机推荐

  1. [转帖]8086 CPU 寄存器简介

    8086 CPU 寄存器简介 https://www.cnblogs.com/BoyXiao/archive/2010/11/20/1882716.html 哎 没看完 感觉好复杂. 引子 打算写几篇 ...

  2. datanode无法连接到namenode

    datanode无法连接到namenode namenode在清空hadoop.tmp.dir和namenode.dir文件夹重新格式化后,datanode还是无法连接到namenode并报错: hd ...

  3. 安卓版 WPS 使用电脑字体、安卓版 WPS 添加字体、安卓 WPS 无法显示文档真实字体(24)

    1. 前言 安卓版WPS默认只有那么几种字体,查看电脑的Office文档无法显示文档的真实字体.想要用更多的字体需要开会员,这里提供免费方案. 2. 操作步骤 1.先在手机中打开一个要查看的文档: 2 ...

  4. python学习-20 集合

    集合set 1.由不同元素组成的集合,集合是一组无序排列的,集合中的元素必须是不可变的 -定义集合 第一种: jh = {1,2,3,4} print(type(jh),jh) 运行结果: <c ...

  5. Django入门(上)

    一.Web应用程序 1.web应用程序介绍 Web应用程序是一种可以通过Web访问的应用程序,程序的最大好处是用户很容易访问应用程序,用户只需要有浏览器即可,不需要再安装其他软件. 应用程序有两种模式 ...

  6. Java 中的锁原理、锁优化、CAS、AQS 详解!

    来源:jianshu.com/p/e674ee68fd3f 1.为什么要用锁? 锁-是为了解决并发操作引起的脏读.数据不一致的问题. 2.锁实现的基本原理 2.1.volatile Java编程语言允 ...

  7. Tomcat安装及其目录结构介绍

    Tomcat服务器是一个免费的开放源代码的Web应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP程序的首选. Tomcat的安装版本有绿色解压 ...

  8. 怎样通过混入(Mixin)实现多继承

    js不提供现成的多重继承的方法, 但可以通过Object.assign()来手动实现: function Father1(name){ this.name = name; } function Fat ...

  9. hdu 3342 拓扑模板题

    直接上代码吧 #include<cstdio> #include<cstring> #include<algorithm> using namespace std; ...

  10. java多线程:继承Thread和实现Runable接口的区别

    java中我们想要实现多线程常用的有两种方法,继承Thread 类和实现Runnable 接口,有经验的程序员都会选择实现Runnable接口 ,其主要原因有以下两点: 首先,java只能单继承,因此 ...