C程序设计(第四版)谭浩强第8章_指针.pptx

  1. 1、本文档共141页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第八章;表示复杂的数据结构 动态分配内存 有效地使用字符串、数组 在调用函数时能得到多个返回值 能直接处理内存地址;§8.1地址和指针的概念;2、变量i的地址存放在另一个变量p中,通过变量p获得变量i的地址,再对变量i进行存取变量值的方式称为间接访问。;我们把这种专门用来存放变量地址的变量称作是指针变量。;一个变量的地址称为该变量的指针。 如,地址2000就是变量i的指针。 用来存放另一个变量的地址(指针)的变量,称为“指针变量”。 如 i_pointer 变量。;§8.2 变量的指针和指向变量的指针变量;;使用取地址运算符得到一个变量的地址, 将其赋值给指针变量。 int i, j, * pointer_1, * pointer_2; pointer_1= i; pointer_2= j; 于是: pointer_1 指向 i pointer_2 指向 j;#include stdio.h void main() { int i= 5, j= 6; int *i_pointer, * j_pointer; i_pointer = i; j_pointer = j; printf(i= %d, i= %d\n, i, i); printf(i_pointer= %d\n, i_pointer); printf(*i_pointer= %d\n, *i_pointer); printf(\nj= %d, j= %d\n, j, j); printf(j_pointer= %d\n, j_pointer); printf(*j_pointer= %d\n, *j_pointer); };;;#include stdio.h void main() { char ch=a, * ch_pointer= ch; short int sint_I= 5, * sint_I_pointer= sint_I; float float_j= 6, * float_j_pointer= float_j; double double_k=4, * double_k_pointer= double_k; printf(ch_pointer= %d\n, ch_pointer); printf(ch_pointer+1= %d\n, ch_pointer+1); printf(\nsint_I_pointer= %d\n, sint_I_pointer); printf(sint_I_pointer+1= %d\n, sint_I_pointer+1); printf(\nfloat_j_pointer= %d\n, float_j_pointer); printf(float_j_pointer+1= %d\n, float_j_pointer+1); printf(\ndouble_k_pointer= %d\n, double_k_pointer); printf(double_k_pointer+1= %d\n, double_k_pointer+1); };8.2.2 指针变量的引用 ;和*为一元运算符,优先级很高。运算时“从右向左” 1. *pointer 等价于pointer 等价于 a 先进行*pointer运算, 得到变量a, 再执行运算。 2. *a 等价于 a 等价于*pointer 即先进行a 运算, 得到a的地址, 再执行*运算 在一个表达式中,如果*和紧密相连在一起时,可以理解为: 两个运算相互抵消。;#include stdio.h void main() { int a=7; int *aPtr; aPtr= a; printf(a的地址 a 是:%p, 指针 aPtr 为:%p \n \n, a, aPtr); printf(a的值为:%d, 指针指向的值 *aPtr :%d\n, a, *aPtr); printf(\n如果和*相连出现,则等价于和*互相抵消\n *aPtr = %p, *aPtr = %p, *aPtr, *aPtr); };例8 . 2 输入a和b两个整数,按先大后小的顺序输出

文档评论(0)

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

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

1亿VIP精品文档

相关文档