嵌入式Linux下C程序设计06指针.pptVIP

  1. 1、本文档共23页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
嵌入式Linux下C程序设计06指针.ppt

嵌入式Linux下C程序设计 主讲:成宝宗 指针 一、变量的地址 计算机中,数据存储在内存中。 内存可划分为若干存储单元,每个单元可以存放8位二进制数,既1个字节。 内存单元采用线性地址编码,每个单元具有唯一一个地址编码 1、变量的地址:系统为变量分配的内存地址 一个无符号整型数 int a; float b; a=3; b=5; 2、变量的有关概念 存储内容:数据值 空间大小:数据类型 空间位置:地址 二、变量的访问方式 1、直接访问 2、间接访问 定义一个变量p,存放a的地址,通过p访问a 若将变量p的值改为3AB0(b的地址),则可以通过p访问b int a; float b; a=3; b=5; 指针变量的定义与引用 一、定义方法 类型符 *指针变量名 指针变量的类型 所指向的内存中存放 的数据的类型 二、指针变量的赋值 指针变量的值为地址,是个无符号整数。 但不能直接将整数常量赋给指针变量。 用变量的地址给指针变量赋值(求地址运算符) 注:变量的类型必须与指针变量的类型相同 用相同类型的指针变量赋值 注:若不赋值,则指针标量的值是随机的。 赋空值NULL 指针变量的初始化方法: 赋空值NULL 用已定义的变量的地址 三、指针变量的应用 1、两个有关的运算符:*、 形式:任意变量 /*取地址运算符*/ *指针变量 /*指针运算符*/ 含义:a表示变量a所占据的内存空间的首地址 *p表示指针变量p所指向的内存中的数据 应用:通过指针变量访问所指变量 1)将指针变量指向被访问的变量 如:int a=5,*p,b; p=a; 2)访问所指变量 取内容:b=*p; printf(“%d\n”,*p); 存内容:*p=100; 指针和数组 一、一维数组与指针 1、数组是连续存放的若干个元素的集合 2、数组名就是指向此数组第1个元素的指针(首地址) 如:int a[10],*p; 则p=a等价于p=a[0]; 3、某一元素的地址:p=a[i] 用指针引用该元素:*p a[i] 4、数组元素的下标在内部实现时,统一按“基地址+位移”的方式处理 既:a a+1 a+I 故表示数组元素的地址可以用:p+i、a+I 表示数组元素的内容可以用:a[i]、*(p+i)、*(a+i) 指针变量和数组运算 指针变量指向数组的方法 指向数组首地址 用赋初值方法:*指针变量=数组名 在程序中赋值: 指针变量=数组名 指向某数组元素 用赋初值方法:*指针变量=&数组名[下标] 在程序中赋值: 指针变量=&数组名[下标] 指向一维数组的指针变量的使用 当指针变量指向数组首地址 引用数组元素[i]: *(指针变量+i) 当指针变量指向下标为i的数组元素 引用数组元素[i]: *指针变量 引用数组元素[i-k]: *(指针变量-k) 引用数组元素[I+k]: *(指针变量+k) 指针VS下标 下标运算比较直观,下标运算只能做绝对引用 指针运算非常灵活,指针运算可以做相对引用 指针元素引用和下标元素引用实质相同 当指针变量指向数组首地址后,对下标为i的数组元素引用的四种方法 *(指针变量+i) *(数组名+i) 指针变量[i] 数组名[i] 例如:int a[10],*p=a; 若要引用a[5]数组元素: *(p+5)、*(a+5)、p[5]、a[5] 指针变量的算术运算 指针变量和整数的算术运算 指针变量+整数 指针变量-整数 ++指针变量 --指针变量 指针变量++ 指针变量- - 指针变量和指针变量的减法运算 指针变量1-指针变量2 注意:要求这两个指针变量必须指向同一个数组,否则不能进行减法运算;运算结果为它们所指向的数组元素下标相差的整数。 例如:int a[10],*p=a[5],*q=a[8]; q-p (值为3) p-q (值为-3) 指针变量的关系运算 指针变量1 关系运算符 指针变量2 注意:要求这两个指针变量必须指向同一个数组,否则不能进行关系运算;运算结果为逻辑真(1),或逻辑假(0)。 例如:int a[10],*p=a[5],*q=a[8]; q>p (值为1) q<p (值为0) p=a (值为1) p=a[8] (值为0) 指针和字符串 将指针变量指向字符串常量的方法 第一种方法:给指针变量赋初值的方法 格式:*指针变量=字符串常量 例如:char *p=“abcd” 第二种方法:先定义指针变量,再赋值。 格式:指针变量=字符串常量 例如:char *p;p=“abcd”; 指向字符串的指针变量的使用 处理整个字符串 输出字符串  printf(

文档评论(0)

ziyouzizai + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档