C++程序设计教程:第6章 指针.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第六章 指针 第六章 指针 6.1 指针的概念 6.2 变量与指针 6.3 数组与指针 6.4 字符串与指针 6.5 函数与指针 6.6 返回指针的函数 6.7 指针数组和指向指针的指针 6.8 指针小结 6.9 引用 6.1 指针的概念 变量在内存中的存储 变量名 供程序员访问变量 变量地址 供计算机(CPU)访问变量 变量值(内容) 所谓访问变量 即对变量内容(值)的 读取 和 写入 6.1 指针的概念 编译程序负责将源代码中的变量名 转化为变量的地址 5: int i=0; mov dword ptr [ebp-4],0 6: i++; 0040104F mov eax,dword ptr [ebp-4] add eax,1 mov dword ptr [ebp-4],eax 7: return 0; xor eax,eax 8: } 6.1 指针的概念 对变量的直接访问和间接访问 直接访问: 指令中直接给出变量地址 直接按照变量的地址存取变量 int i=3; 6.1 指针的概念 对变量的直接访问和间接访问 间接访问: 指令中给出存储变量地址的内存单元 通过访问该单元取得变量地址 通过取得的地址访问变量 *i_pointer=3 6.1 指针的概念:直接访问 6.1 指针的概念:间接访问 6.1 指针的概念 指针=变量地址 存放整型数据的变量叫整型变量 存放字符型数据的变量叫字符变量 存放地址数据的变量叫指针变量 6.1 指针的概念 图中i,j , k是整型变量 i_pointer变量的内容是地址 所以i_pointer是指针型变量 6.2 变量与指针 变量的指针就是变量的地址 用来存放变量地址的变量是指针变量 i_pointer 是一个指针变量 *i_pointer 表示以该指针变量的内容为地址的变量的值 *i_pointer表示指针 i_pointer 所指向的变量 6.2 变量与指针 因此:*i_pointer 与 i 等价 6.2 变量与指针 定义指针变量 基类型 * 指针变量名 如:int *p1;float *p2; char *p3; 注意区分定义整型变量和定义指向整型的指针变量 int a; int *p; 注意:*只是表示该变量为指针,而不是变量名的一部分 p和*p是两个截然不同的概念 6.2 变量与指针 给指针变量赋值 由于指针变量的值只能是地址, 故采用取地址运算符取得某一变量的地址 然后赋给指针变量 如: int i=3; int *p; p=i; cout*p; 例:指针定义 6.2 变量与指针 注意: 不能用一个整数给一个指针变量赋初值 int *p=2000 //错误 int i; int *p=i; //正确 在定义指针变量时必须指定基类型 想一想:定义一般变量时指定类型的作用是什么? 想一想:指向整型变量的指针和指向字符型的指针有何异同? 6.2 变量与指针 6.2 变量与指针 引用指针变量 取地址运算符 * 指针运算符 例6.1 通过指针访问整型变量 6.2 变量与指针 int a=100,b=10; //定义整型变量a,b int *pointer_1,*pointer_2; //定义指针变量 pointer_1=a; //把变量a的地址赋给pointer_1 pointer_2=b; //把变量a的地址赋给pointer_2 couta bendl; //输出a和b的值 cout*pointer_1 *pointer_2endl; //输出*pointer_1和*pointer_2的值 6.2 变量与指针 若已执行了 pointer_1=a; *pointer_1 的含义是什么? 同 * 具有相同的优先级 和 * 都是右结合性的运算符 故: *pointer_1 = (*pointer_1) = ( a ) =a =pointer_1 想一想:*a 的含义是什么? 6.2 变量与指针 经典例题:通过指针交换两个数 int *p1,*p2,*p,a,b; cinab;

文档评论(0)

学习让人进步 + 关注
实名认证
文档贡献者

活到老,学到老!知识无价!

1亿VIP精品文档

相关文档