第十五课 简单易懂的指针
前言:
%x 输出十六进制
& 取地址符
* 取出地址内容,有时又是定义指针的标志符
sizeof() 计算字节
记住两句话:1.引用变量的就是引用变量的内容 2.记住上一句话
1.指针即地址。
我们定义变量的时候,一个婴儿出生编译器会在内存中分配空间。这就好像一个人,来到这个世界上就会有一个家,这个世界会为他分配一个摇篮。这个摇篮就是他的地址。
比如定义一个int a;那么编译器就会为她分配一个4个字节的空间。
在这个程序中,可以看出,定义的int a=100,编译器为她分配了4个字节的空间,地址叫18ff44,里面存放了100.
引用变量有两种办法:(引用变量就是引用变量的内容,在这个程序中,a的内容是100)
一种是根据变量名引用。比如在上个程序中,输出a的值;
第二种办法是根据地址名来引用.
和人的生活对比,每一个人都占据了一个地方,可以精确到一个点,只要找到这个点,就能找到这个人。这个点都相当于地址。
指针说到底就是地址。
2.定义指针并初始化
定义指针的方式:类型* 指针名;int* point=NULL;//定义一个指针指向空地址ps:NULL是一个空地址。
指针被定义出来一定要初始化,无论如何都要
指针变量时用来存放地址的。
int a=100;
int* point=&a;在这个定义中,int* 才是一个整体,point是指针名。
&a是取出a的地址储存在指针变量中。
因此point里面存放着a的地址,而不是a的内容100;
3.引用指针的内容
可以看出输出point与&a一致,所以point指的是a的地址
4.取出point里面的内容
这个运算符是*
从这个程序中可以看出,*point与point是不一样 的。
*这个符号可以取出地址里面的内容。
5.取出指针所指向的内容
实际上,所有的指针都是一样的空间,会被分配4个字节的空间
但是,取出指针所指向的内容却不是如此,他们是根据自己的类型取出变量
在一般的编译器里面,定义的指针要与所所存放的数据保持一致。
也就是说int型指针只能指向int型变量,不能指向其他变量。
6.指针所指向的内容
//交换ab两个数据的内容
int a=1;
int b=2;
int *pa=&a,*pb=&b;//pa指向a的地址,pb指向b的地址
pa=&b,pb=&a//pa指向b的地址,pb指向a的地址
这个算法只是改变了*pa和*pb,而ab的值并没有改变;因为只改变了pa,pb的指向。
下面这个算法可以交换ab的值
int a=2,b=3
int* pa=&a,pb=&b;
*pa=*pa+*pb;
*pb=*pa-*pb;
*pa=*pa-*pb;
下一节讲指针与数组,指针的加法减法也会一起解释,这些东西只有在指针才容易说明白;
第十五课 简单易懂的指针相关推荐
- C语言笔记 第三十五课 数组参数和指针参数分析
第三十五课 数组参数和指针参数分析 思考:为什么C语言中的数组参数会退化为指针? 退化的意义 C语言中只会以值拷贝的方式传输参数 当向函数传递数组时:(错误的,设计当初的思路) 将整个数组拷贝一份传入 ...
- NeHe OpenGL第三十五课:播放AVI
NeHe OpenGL第三十五课:播放AVI 在OpenGL中播放AVI: 在OpenGL中如何播放AVI呢?利用Windows的API把每一帧作为纹理绑定到OpenGL中,虽然很慢,但它的效果不错. ...
- NeHe OpenGL教程 第四十五课:顶点缓存
转自[翻译]NeHe OpenGL 教程 前言 声明,此 NeHe OpenGL教程系列文章由51博客yarin翻译(2010-08-19),本博客为转载并稍加整理与修改.对NeHe的OpenGL管线 ...
- NeHe OpenGL第二十五课:变形
NeHe OpenGL第二十五课:变形 变形和从文件中加载3D物体: 在这一课中,你将学会如何从文件加载3D模型,并且平滑的从一个模型变换为另一个模型. 欢迎来到这激动人心的一课,在这一课里,我们 ...
- 【C++探索之旅】第一部分第十二课:指针一出,谁与争锋
内容简介 1.第一部分第十二课:指针一出,谁与争锋 2.第一部分第十三课预告:第一部分小测验 指针一出,谁与争锋 上一课<[C++探索之旅]第一部分第十一课:小练习,猜单词>中,我们用一个 ...
- C语言学习第十五课(文件操作)
第十五课 1,文件的概念 文件一般指存储在外部介质(如磁盘磁带)上的集合: 2,流的概念 ·操作系统是以文件为单位对数据进行管理的,输入输出是数据传送的过程,数据如流水一般从一处流向另一处,因此将输入 ...
- 小学计算机网络信息安全教案,黑教版信息技术五年级上册第十五课《网络信息安全》教案.doc...
黑教版信息技术五年级上册第十五课<网络信息安全>教案.doc 文档编号:535180 文档页数:2 上传时间: 2019-01-10 文档级别: 文档类型:doc 文档大小:33.00KB ...
- 小学五年级上册计算机教案新疆,新疆青少版信息技术五年级上册全册教案(共十五课24页).doc...
新疆青少版信息技术五年级上册全册教案(共十五课24页).doc 文档编号:761001 文档页数:24 上传时间: 2019-10-10 文档级别:成套资源 文档类型:doc 文档大小:64.00KB ...
- OpenGL教程翻译 第二十五课 天空盒
第二十五课 天空盒 背景 天空盒是用于增强场景表现力的一个常用技术,它一般通过在相机周围包裹一个纹理来实现.这个纹理通常是一些天空.山川或者摩天大楼等等,下面是游戏 Half-Life 中使用天空盒的 ...
- 用OpenInventor实现的NeHe OpenGL教程-第二十五课
用OpenInventor实现的NeHe OpenGL教程-第二十五课 NeHe教程在这节课中向我们介绍了如何从文件加载3D模型,并且平滑的从一个模型变换为另一个模型.两个模型之间 ...
最新文章
- SpringBoot2.0之 个性化Banner
- 《Booth 空箱》发售一周年回顾
- MySQL高级 - insert优化
- 链接分析算法系列-机器学习排序
- 解放人与设备距离,5G时代的远程操控该如何完成
- 【Java】基础知识整理
- 第三章计算机网络,第三章-计算机网络及应用.ppt
- linux php文件,Linux php文件安装目录在哪
- 织梦熊掌号提交urls.php,织梦熊掌号api自动提交代码
- 用python进行归并排序,用Python做归并排序
- 机器学习pdf_2020年新书-《机器学习算法入门》免费pdf分享
- 线程学习9——Mutex类
- Atitit.java c#.net php项目中的view复用(jsp,aspx,php的复用)
- Atitit. 二进制数据ascii表示法,与base64编码解码api 设计标准化总结java php c#.net
- 多窗直播 截屏录制——UC问鼎全球首款直播浏览器
- u 20ubuntu 安装 postfix_惠普ENVY 13-AQ0011TX(6QT48PA)笔记本安装win10教程图解
- java中reject方法作用_Promise.all中对于reject的处理方法
- VS2019_Windows桌面应用程序_01
- 《极简学习法》读书笔记
- 瘦客户机为何不瘦反胖?
热门文章
- Oracle EBS使用adpatch工具打patch过程【Z】
- 制作ROS小车系列(一)——小车底盘制作(麦科勒姆轮地盘)
- 怎样将图片转换成word文字
- 假若明天来临——《AI.未来》读后感3900字
- 从聚合数据请求菜谱大全接口数据,解析显示到ListView
- MATLAB编写m函数理解 y=f(g(x))*h(x)
- 各大型网站架构分析收集
- android开发跑步软件设计,计算机软件毕业设计 android跑步应用开发.doc
- angular2 全局路由守卫_Angular 路由守卫
- 车牌检测STN:Spatial Transformer Networks