黑马程序员------<a href="http://www.itheima.com" target="blank">Java培训、Android培训、iOS培训、.Net培训</a>、期待与您交流! -------

六 指针与函数

01 指针作为函数参数

指针作为实参时,与普通变量一样,也是采用单向的值传递方式,即将指针变量的值(该值是一个地址)传递给被调函数的形参(必须也是一个指针变量)。由于形参接受实参传递的值是一个地址,这样两者就指向了同样的变量。

*如果想要C语言中得函数调用实现多个值的改变,可以设计一个形参是指针变量的被调函数,这样主调函数的实参指针与被调函数的形参指针相结合,根据形参指针与实参指针指向同一地址的原理,就可以通过改变该地址中得值,实现主调函数与被调函数之间的数据传递,从而使被调函数实际返回多个值到主调函数。

// 输入两个整数,用自定义函数实现这两个值的交换,并在主函数中输出交换后的结果.
#include <stdio.h>
void swap(int *x,int *y); //函数声明int main()
{int a,b; // 定义两个需要交换的整数int *p1,*p2; // 定义两个指向int类型的指针
    printf("请输入两个数:\n"); // 输入两个整数scanf("%d%d",&a,&b); // 接受两个整数
    printf("交换前a=%d,b=%d\n",a,b); // 输出交换前的整数
    p1 = &a; // 使p1指向了xp2 = &b; // 使p2指向了yswap(p1,p2); // 调用函数交换a和bprintf("交换以后:a=%d,b=%d\n",a,b);}void swap(int *x,int *y)
{int temp;temp = *x;*x = *y;*y = temp;
}

02 返回指针值的函数

一般形式:

数据类型 *函数名(形参列表)

{

函数体;

}

03 指向函数的指针变量

可以把函数的首地址赋予一个指针变量,使该指针变量指向该函数,然后通过指针变量即可找到并调用这个函数,把这种指向函数的指针变量叫做函数指针变量。

一般形式:

数据类型 (*指针变量名)(函数形参列表)

#include <stdio.h>int main()
{int a = 4474;int *p = &a;// p = &a;*p = 2;printf("%d\n",*p);// 变量类型  变量名;// 格式:变量类型 *变量名;// 定义了一个指针变量p// 指针变量只能存储地址// 指针就一个作用:能够根据一个地址值,访问对应的存储空间// 指针变量p前面的int:指针变量p只能指向int类型的数据return 0;
}

转载于:https://www.cnblogs.com/iceshan/p/4492524.html

12-黑马程序员------C 语言学习笔记--- C语言指针与函数相关推荐

  1. 黑马程序员_java自学学习笔记(八)----网络编程

    黑马程序员_java自学学习笔记(八)----网络编程 android培训. java培训.期待与您交流! 网络编程对于很多的初学者来说,都是很向往的一种编程技能,但是很多的初学者却因为很长一段时间无 ...

  2. 黑马程序员Java教程学习笔记(五)

    学习视频:https://www.bilibili.com/video/BV1Cv411372m 如侵权,请私信联系本人删除 文章目录 黑马程序员Java教程学习笔记(五) 日期时间:Date.Sim ...

  3. 【黑马程序员新版Linux学习笔记】Linux系统实用操作命令——操作演示

    [黑马程序员新版Linux学习笔记]Linux 零基础快速入门: (一)Linux基本命令--操作演示 (二)Linux用户和权限 -- 操作演示 (三)Linux 小技巧快捷键 (四)Linux系统 ...

  4. 黑马程序员Java教程学习笔记(三)

    学习视频:https://www.bilibili.com/video/BV1Cv411372m 如侵权,请私信联系本人删除 文章目录 黑马程序员Java教程学习笔记(三) 面向对象:设计对象.注意事 ...

  5. 【黑马程序员】SpringBoot2学习笔记

    1.SpringBoot的前菜 1.1 发展沿革 2013年,Pivotal团队开始研发SpringBoot. 2014年4月,发布全新开源的轻量级框架的第一个SpringBoot版本. 1.2 特点 ...

  6. 尚硅谷+黑马程序员MongoDB视频学习笔记(一)

    本学习笔记是来源于学习B站上的尚硅谷和黑马的MongoDB教学视频而做的知识总结. 一.数据库(Database) 数据库是按照数据结构来组织.存在和管理数据的仓库.说白了,数据库就是存在数据的仓库. ...

  7. 黑马程序员机器学习Day2学习笔记

    一.转换器和预估器 二. KNN算法 网格搜索和交叉验证 KNN案例:Facebook预测签到位置 朴素贝叶斯 联合概率.条件概率与相互独立 决策树 信息熵 回顾传统机器学习算法流程: 1.获取数据 ...

  8. 黑马程序员--某天学习笔记

    变量 1.计算机中所有的数据都是以二进制的形式存储的,常见的还有十进制 八进制 十六进制. 2.变量的作用: 存储数据, 存储的对象不同,所占的存储空间也不同. 变量的声明: A)数据类型   变量名 ...

  9. 黑马程序员之HTML学习笔记:有关css和js针对不同浏览器兼容的问题

    --------------------------------------------------- 2345王牌技术员联盟.2345王牌技术员联盟.期待与您交流!----------------- ...

  10. 【黑马程序员】Redis学习笔记001:Redis简介+五种基本数据类型

    一.Redis入门简介及基本操作命令 问题的抛出 出现的问题: 海量用户 高并发 罪魁祸首--关系型数据库: 性能瓶颈:磁盘IO性能低下 扩展瓶颈:数据关系复杂,扩展性差,不便于大规模集群 解决思路 ...

最新文章

  1. 【Linux学习笔记】 -- 基本Shell命令
  2. [生物] - 怎样理解细胞分裂次数是有限制的
  3. ASM(active shape models)算法介绍
  4. Bookshelf 2 简单DFS
  5. 【ArcGIS微课1000例】0015:ArcGIS如何创建/自定义快捷键?
  6. 学前教育试题库及答案_最新《学前教育学》专科-试题库及答案资料
  7. ai字体素材网站_综合网站大全,字体、设计、图片各种素材管够,资源丰富你懂得...
  8. 【原】如何实现IE6下块级元素的内容自动收缩
  9. js隐藏打开项目隐藏编辑 和删除按钮
  10. 无线扩展器怎么连接好友服务器失败怎么办,tplink无线扩展器怎么设置 tplink无线扩展器设置方法...
  11. 关于Docker的一些问题总结
  12. mysql数据库有dbo吗_拒绝了对对象 '表名' (数据库 '数据库名',架构 'dbo')的 SELECT 权限...
  13. seo文章伪原创技巧(你不知道的伪原创文章处理技巧)
  14. 框架设计之菜鸟漫漫江湖路系列 三:初入江湖
  15. 错误提示——0x0FE1E63C (ucrtbased.dll)处(位于 liaoabiao _2019.12.21.exe 中)引发的异常: 0xC0000005: 写入位置 0x005FA000
  16. 二维码的20种商业应用模式
  17. python实现RFM建模
  18. 人人都想买湖景房!湖景房优缺点你知道吗?
  19. python、idel、pycharm的安装使用
  20. 【设计模式与Android】抽象工厂模式——嵌合体克隆工厂

热门文章

  1. CSS display: table-cell 用于水平垂直居中
  2. postgres安装02--postgis
  3. 获取所有栈的信息,只有最上面的和最下面的,但是不能获取栈中间的activity信息...
  4. github使用个人总结
  5. Linux 桌面的安装
  6. SQL判断语句用法和多表查询
  7. Linux自动删除n天前日志
  8. RedHat7.1 安装Oracle12102
  9. 玩转产品排期:让小伙伴们高效协作
  10. Spring Boot -Shiro配置多Realm