- 1、本文档共50页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 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
您可能关注的文档
- c语言程序设计教程电子心教案-第07章.ppt
- c语言程序设计经典行教程class1.ppt
- c语言程序设计课呵件第02章简单程序设计.ppt
- c语言程序设计课件ppt及程序代台码第1章.ppt
- c语言程序设计课件pp头t及程序代码第2章算法.ppt
- c语言程序设计课件第3章去100913.ppt
- c语言程序设计课件第06章数且组、指针与字符串.ppt
- c语言程序设计课件第更07章继承与派生.ppt
- c语言程序设计课件第小03章.ppt
- c语言程序设计课件内20091.ppt
- 2024年湖南省高考英语试卷(含答案解析)+听力音频+听力原文.docx
- 2024年江西省高考英语试卷(含答案解析)+听力音频+听力原文.docx
- 2024年安徽省高考英语试卷(含答案解析)+听力音频+听力原文.docx
- 2024年福建省高考英语试卷(含答案解析)+听力音频+听力原文.docx
- 2024年广东省高考英语试卷(含答案解析)+听力音频+听力原文.docx
- 2024年河北省高考英语试卷(含答案解析)+听力音频+听力原文.docx
- 2024年河南省高考英语试卷(含答案解析)+听力音频.docx
- 2024年湖北省高考英语试卷(含答案解析)+听力音频+听力原文.docx
- 2024年湖南省高考英语试卷(含答案解析)+听力音频+听力原文.docx
- 2024年江苏省高考英语试卷(含答案解析)+听力音频+听力原文.docx
文档评论(0)