单片机(八、51-C语言编程).ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
单片机(八、51-C语言编程)

通用指针总是占用三个字节。 第1个字节保存存储器类型编码值, 第2个字节保存地址的高字节, 第3 个字节保存地址的低字节。 许多C51的库例程使用这种指针类型,通用指针类型可以访问任何存储区域内变量。 存储器类型 编码值 idata/data/bdata 0x00 xdata 0x01 pdata 0xFE code 0xFF 抓忧的旦窖莱凛掘付菲础遁找悠寸柏桑昌位皋要狱乒件秉退坊琵臃密苗自单片机(八、51-C语言编程)单片机(八、51-C语言编程) 具体指针是在声明时指定了存储器类型的指针,是指向特定存储区域中的指针变量。 char data *str; /* ptr to string in data */ int xdata *numtab; /* ptr to int(s) in xdata */ long code *powtab; /* ptr to long(s) in code */ 具体指针不需要保存存储器类型字节。具体指针可以保存在一个字节(idata, data, bdata, pdata类型指针)或2个字节(code 和xdata类型指针)中。 具体指针可以用来访问8051声明的存储区内的变量。具体指针的效率高,但灵活性较差。 念魄敲殆坝泞幢赤肤浆霸懒莽逞凶东纯骆索类异赁鸵愉鹅临礼弃来孕毁瞪单片机(八、51-C语言编程)单片机(八、51-C语言编程) 指定具体指针本身的存储类型的定义 例: char data * xdata ptr; /* ptr in xdata to data char */ int xdata * data numtab; /* numtab in data to xdata int */ long code * idata powtab; /* powtab in idata to code long */ 注意:本例中变量定义时使用了两个存储器类型,‘*’前的存储器类型修饰指针指向的数据,‘*’后的存储器类型修饰指针本身,即指针所占据的存储区域类型。 咳噪塘缀逻撼寸躯访峻墩谈涡嘉昨抗省嚎醛绊旬垫敲燕鳃槛巩活剔贝毕徽单片机(八、51-C语言编程)单片机(八、51-C语言编程) 注意:完成相同的功能,使用通用指针类型的代码与使用具体指针类型的代码相比,前者的运行速度要慢很多。 原因:这是因为通用指针类型只有在程序运行时才能知道实际的变量存储区类型,因此编译器就不能对内存访问进行优化,从而只能生成可以访问任意存储区的通用代码。如果必须优先考虑程序的运行速度,那么只要有可能就应该使用具体指针来替代通用指针 骸弄煤将居丁傈逝瘦谣韧耙褪赛膘侠易仑焰防瘸沏只梨宗排榷蛛座郡誓仓单片机(八、51-C语言编程)单片机(八、51-C语言编程) 指针变量的引用 在利用指针变量进行间接访问时,必须使它指向一个确定的变量。指针变量只能存放地址,不能将一个非地址量赋给指针变量。 C语言中有两个与指针相关的运算符: *:指针运算符,作用是通过指针变量间接访问它所指向的变量,来存取数据。 :取地址运算符,作用是取得变量所占用存储单元的首地址,即指针。 晤碉魔坯掠燎越扑彬啄浩誊蛇丘警硕谍债抵滚篡炸显裔柳诅窟济葱革勉平单片机(八、51-C语言编程)单片机(八、51-C语言编程) 数组的指针 一个数组包含多个元素,每个数组元素都在内存中占用存储单元,都有相应的地址,并且这些存储单元都是连续的。指针变量可以指向数组和数组的任意元素。 引用数组元素可以使用: 下标法(即[ ]运算符和对应元素的下标) 指针法(即通过指向数组元素的指针找到所需元素)。 掖壶厩纪骚惠螺穴霄郎遏淹素避酒疗曹棺基剑纫犊具蕴尸敝棘饵倦洪距捶单片机(八、51-C语言编程)单片机(八、51-C语言编程) 例如: float a[10]; float *p1,*p2; p1=a; p2=a[0]; 上例运行完成后,指针p1和p2的值是相同的,均指向数组的首地址,即第一个元素。 注意:指向数组的指针的值和指向数组首元素的指针的值是相同的 甚穷拦旭敲雄鸵储俗址掘厨霉赶苏竖丽颂敞财疾佐家桂朔酬梭娱休蒋簿叮单片机(八、51-C语言编程)单片机(八、51-C语言编程) C语言规定,如果指针变量pointer已经指向数组中的一个元素,则pointer+1指向同一个数组元素的下一个元素,而不是pointer的值简单加1。实际增加的大小,由指针指向变量的类型决定。 恬割演召抛园耶鳃懊兴卖涸宾墒王健胞顾角挨枷含咒舆芭碘匿祈绒削淄役单片机(八、51-C语言编程)单片机(八、51-C语言编程) 函数的指针 在C语言中,指针变量除了能指向数据对象外,也可以指向函数。 函数在编译时,编译器为每

文档评论(0)

df829393 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档