网站大量收购闲置独家精品文档,联系QQ:2885784924

c语言第7章指针第零1讲课件.ppt

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

第7章 指针 (一) 内容提要 指针概述 指针的概念 为什么引入指针的概念 指针变量作为函数参数 字符指针作为函数参数 指针和数组间的关系 一维数组的地址和指针 二维数组的地址和指针 为什么引入指针的概念 铁杆C/C++程序员最挚爱的武器:指针 C/C++的高效、高能主要来自于指针 很多不可能的任务由指针完成 为什么引入指针的概念 指针 为函数提供修改变量值的手段 为C的动态内存分配系统提供支持 为动态数据结构(如例链表、队列、二叉树等)提供支持 可以改善某些子程序的效率 指针(Pointer)的概念 指针也是一种数据类型 指针变量 声明为指针类型的变量,专门存放地址数据的变量 如何定义指针变量? 定义指针变量 int *p; 定义了一个指针变量p,简称指针p p是变量,int*是类型 指针变量初始化 int *p,a; p = a; *p 与 a 完全等价 int i,*p; p=i; 与*操作符 用来取变量的地址 *用来取指针指向的内存中的内容 指针变量与其它类型变量的对比 指针的指向 只能指向同一基类型的变量,否则将引起warning float x; int *p = x; TC编译 warning: Suspicious pointer conversion in function main VC编译 warning C4133: = : incompatible types - from float * to int * 指针运算 算术运算 short *p, a[10]; p = a; p++; /*p的值增加多少?*/ 指针的加减运算是以其指向的类型的字节长度为单位的 指针运算 int *p, *q, a[10]; p = a; q = a[5]; q - p q = p + 5; 指针运算不能乱算 一般只进行指针和整数的加减运算,同类型指针之间的减法运算 其它运算,比如乘法、除法、浮点运算、指针之间的加法等,并无意义,所以也不支持 指针运算 关系运算 指向同一种数据类型的两个指针才能进行关系运算 值为1或0 p q p q p == q 不能与非指针类型变量进行比较,但可与NULL(即0值)进行等或不等的关系运算 判断p是否为空指针 P == NULL p != NULL 指针运算 赋值运算 指针在使用前一定要赋值 为指针变量赋的值必须是一个地址 指针与函数 指针既然是数据类型,自然可以做函数参数和返回值的类型 指针做函数参数的经典例子: 两数的互换 例7.1~7.2:编写函数实现两数的互换 void Swap(int x,int y) { int temp; temp = x; x = y; y = temp; } 简单变量作函数参数与指针变量作函数参数的比较 swap函数的几种错误形式(1/3) 参数单向传递 void Swap(int x, int y) { int temp; temp = x; /*x,y为内部变量*/ x = y; y = temp; } swap函数的几种错误形式(2/3) 参数单向传递 void Swap(int *p1, int *p2) { int *p; p = p1; /*p1,p2为内部变量*/ p1 = p2; p2 = p; } swap函数的几种错误形式(3/3) 指针p没有确切地址 void Swap(int *p1, int *p2) { int *p; /*指针p未初始化*/ *p = *p1; *p1 = *p2; *p2 = *p; } 字符串与字符数组、字符指针 C语言并没有为字符串提供任何专门的表示法,完全使用字符数组和字符指针来处理 字符串 一串以\0结尾的字符 字符数组 每个元素都是字符类型的数组 char string[100]; 字符指针 指向字符类型的指针 char *p; 数组和指针可以等同看待,上面三者本质上是一回事 字符指针变量与字符数组的区别 定义方法不同 char str[10]; char *ptr; 赋值方法不同 char str[10]; str = ”china”; /*错误*/ strcpy(str,”china”); /*正确*/ char *ptr; ptr = ”china”; 字符指针是变量,而数组名是地址常量 使用字符指针的注意事项 字符指针变量必须有明确的指向,否则使用是危险的 例如,输入字符串时 char *a; scan

文档评论(0)

150****4233 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档