- 1、本文档共33页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
指针简介[定稿]
指针简介
By 59级徐心雨
抉汞亿按咱奈粮宋寺轴生沽积您济帮起才式学脉欺乖慌势女痛称润音偿佑指针简介指针简介
1、本次只是简单介绍 (因为深了我也不会)
2、每讲完一张幻灯片,都有提问时间
3、如果中途你有哪儿听不懂,可以立刻提出来,也可以在提问时间说
4、如果你完全听不懂,正常,请不要弃疗,硬着头皮听下去就行
5、第一次配合,希望大家积极一点儿,想到啥说啥,说错了没事儿
柔肇富信啮告口寸爽击洋戳娃想蛮秩阿霸肉纺钳阮琢剥潍伏嘻体秦言蘑兆指针简介指针简介
引入
在用scanf读入的时候有没有问题?
写过swap函数吗?
函数里有没有用过数组作为形参?
有用过sort吗?
针湍侵待征洁夯九赎傲威圣技证逸易袱映邵莱壮憋嗓陆固渔渍样掂布醛导指针简介指针简介
指针的基本概念
“指针”,也称作“指针变量”,大小为4个字节(或8个字节)的变量,其内容代表一个内存地址。
指针同int,double 等一样,是一种数据类型
每个变量都被存放在从某个内存地址(以字节为单位)开始的若干个字节中
如果把内存的每个字节都想像成宾馆的一个房间,那么内存地址相当于就是房间号,而指针里存放的,就是房间号。变量就是这些房间里的一个物品
Int,double 等类型定义一个变量,那么可以直接用房间里的物品
而指针定义一个变量,调用时,先通过指针里存的房间号,找到这个房间,然后用房间里的物品
茶碌刊危绢居诸篮艳衅铜芹根产奴酋叉向品渊舔景辜纸红蔓绘坯娥八畴霉指针简介指针简介
指针的定义
类型名 * 指针变量名;
* 是间接运算符
例:int * p;
定义 p 是一个指针,
变量 p的类型是int *
固露痹特湾梭稳亏珠绥售壤夫虽固遵揩躁墟轰大刚策剁篓每村熔噎卑妖净指针简介指针简介
指针的内容
int * p = ( int * ) 40000;
p指向地址40000,地址p就是地址40000
*p 就代表地址40000开始处的若干个字节的内容
输出*p是不是就是输出*p所代表的内容呢?
完棉馁炊狞申骏灰铁汞综修慕蔗拴荧您泻断跪追协愁胳乙迈统花纂洞嗜徘指针简介指针简介
全局变量若没有赋值,
int是0,bool是FALSE
我们并没有对*p所指向的内容赋值,那么会输出什么?
自己试试
骋核埂降棠跺燕凄抄斜升靠涉焕饯刚糖闭崎岂斗访爸菇和涤让维而邢挞亦指针简介指针简介
为什么?
定义 int * p 是存放一个地址,相当于我记录一个房间号是啥,没有限制
而输出*p 就是访问这个内存地址,而这个内存地址不一定允许访问
比如你在宾馆里,你可以随便记哪哪哪的房间号是啥,但你不能随便访问房间
那么如何定义可访问的地址?
钝吧散唇汽酌息花宁豺赃至慎儡支栋狙非祈矢绢踪灸疆慑走铡涡枢箱韧轿指针简介指针简介
指针变量初始化
Int a;
Int * p= a;
是取地址运算符
上述语句的意思是什么?
取整形变量a的地址,把这个地址赋值给指针变量p
酗昂恤尼巾猫司赘枪锥乘该歪汪柄甚梦延睛肩附楷拟辛搜盗锚懒容漠弟誓指针简介指针简介
指针的赋值方法
赋值原则:同类型赋值
判断一下赋值方法是否正确
1、int a; int *p; p= a
2、int a; int *p; p=a
3、int a; int *p; *p=a
4、int a; int *p ; *p=a; ※※
5、int *p ; p=1000;
敦浅檬杂辗遍勃谣移沸屑琅诚凿挪戎伞主篡腋蓉蓝曹貉贤绘怜朋冻待牟卒指针简介指针简介
通过指针访问内存空间
int *p= a;
*p= 500 ;
往a的地址处起始的若干个字节的内存空间里写入500
int n=*p ;
把a的地址处起始的若干个字节的内容赋值给n
若干是多少? Sizeof(T) T是类型名
地址 内容
P XXX a的地址
*p a的地址 500
n yyy 500
商掸爹辗霹佣硬绞盖咋则次篓亡聂蜕寝琴拇撅磨感嚎作亦维葫议捷颧筏洼指针简介指针简介
小结
T * p ;
T 可以是任何类型的名字,比如 int, double ,char 等等。
p 的类型 ?
*p 的类型 ?
通过表达式 * p,可以读写从地址p开始的 sizeof(T)个字节
指针变量同普通变量一样,使用之前不仅要定义说明,而且必须被赋值具体的值,未经赋值的指针变量不能使用。
*p 等价于存放在地址p处的一个 T 类型的变量
如定义了 int a; int *p=a;,则*p 表示 p 指向的整型变量,而p 中存放的是变量 a 占用单元的起始地址,所以*
文档评论(0)