- 1、本文档共29页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
c语言教票程(课件)第6章
第六章 指针 地址和指针的概念 6-1 指针概述 地址与指针 地址与取地址运算 C语言中变量、数组、函数等都占用一定的内存空间,地址是指该内存空间的第一个字节的地址。 C语言中取地址运算符:。 指针与指针变量 指针:就是地址,是变量的地址。 指针变量:存放变量地址的变量 。 指针的类型与指针的定义 指针所指向的对象的类型即是指针的类型。 指针的定义:只要在变量名前加“ * ”即可。 例: int * p 表示p是一个指向整型变量的指针。 注意: * 表示其后的变量是指针,指针变量是p而非*p。 指针变量一般占2个字节,用来存放一个地址。 例L6-0-1 变量、地址、指针、指针的地址。 指针变量的引用 运算符:取地址运算。 * 运算符:指针运算(指向运算,或间接运算),*p表示p所指向的变量。 例L6-1 与*运算符。 例L6-2 使两个指针变量交换指向。 指向指针的指针 int I,*p1,**p2; 多重指针:从理论上讲,可以有多重指针,但一般极易出错,不提倡使用多重指针。 例L6-4 多重指针。 习题5-9 统计单词与空格数。习题5-14 字符串转换为大写、小写(数组法)习题5-14-2 字符串转换为大写、小写(指针法) 6-2 指针与数组 一维数组的指针表示 a[i]:下标法访问数组元素。 *(a+i):地址法访问数组元素。 (a+i表示:从数组a的首地址开始的第i个元素。) 例L6-5 注意: 对数组a,不能用自增(减)进行运算(a++,a--),因为数组的首地址是一个常数。 虽然可用多种方法访问数组元素,效率不同,用指针访问的速度最快,它不要进行转换。 用指针访问数组时(主要是赋值),一定要记住不能越界,否则可能带来严重后果。 用指针访问数组时,因为总是从指针当前位置开始,所以要注意指针的当前值。(例L6-5的最后一次。) 例L6-6 输入若干个温度,求平均值。(用数组) 例L6-6-2 输入若干个温度,求平均值。(用指针) 强调一维数组的两个结论 C中,一维数组名代表该数组的起始地址。 C中,一维数组的任何一个元素的地址,都可用其数组名加上一个偏移量来表示。 这两个结论可以推广至任意维数组都适用。 二维数组的指针表示法 二维数组a 可以看成是由以下元素构成的一个一维数组: a[0],a[1],a[2],…a[i],… 所以a[i]既是一个广义一维数组的元素,也是一个一维数组a[i]的名字(一维数组的首地址),所以a是指向a[i]起始地址的指针,因a[i]是一个一维数组名,即是一个一维数组的首地址,也就是指针,可见a是一个二级指针。 二维数组元素及地址的引用:例L6-7-0 指向一维数组的指针 int (*)p[5] :表示 P是指向一个一维数组的指针(指向该数组的首地址)。P++表示将指针移向下一个一维数组(指向其首地址)。所以可用它处理二维数组,参见例L6-8。 指针与字符串 字符串是存放在字符数组中的,因此可用指针来访问字符中的字符。 例L6-10 用三种方式输出字符串: 1、直接输出字符串数组string: printf(“%s”,string) 2、直接用指向字符串的指针p: printf(“%s”,p) 3、用指针逐个字符输出。 直接用指针表示字符串: char *p=“C Language”; 表示将字符串“C Language”存放在一连续的内存空间(以‘\0’)结束,并将指针P指向该空间的首地址。 上面的程序行也可写成两行: char *p; p=“C Language”; 例L6-12-1 指针指向的字符串与数组表示的字符串的区别 虽然: char a[]=“C Language”; char *p=“C Language”; 都可表示字符串,但两者概念并不相同: a[]表示是一个11个元素的字符数组,将C Language和‘\0’分别存入11个单元。 a 表示首地址,是一个常量,不能改变,如a++是错误的。 P只表示一个地址,指向字符串C Language的首地址。P的值的是可以改变的,如:p++表示将指针向后移一个单元。 指针数组 数组元素都是指针的数组称为指针数组,即指针数组是用来存放一批地址的。主要用来处理字符串数组,如: char *name[5]={“Li”, “Zhang”, “Ling”, “Sun”, “Wang”} 它比用二维数组要节约内存空间(参见P195、196的两个图)。 例L6-13在一批字符串中查找指定字符串。 指针数组举例 例L6-15 用二级指针表示二维数组,对
您可能关注的文档
- c语言的标识符和字符数文据、字符串数据.ppt
- c语言的基本呕控制结构.ppt
- c语言的基拿本概念.ppt
- c语言的基提本知识.ppt
- c语言的课件第八章.ppt
- c语言的内好存分配.ppt
- c语言等级才考试介绍.ppt
- c语言第2章课件.找ppt.ppt
- c语言第3章课件.先ppt.ppt
- c语言第4章选坑择结构.ppt
- 2024年湖南省高考英语试卷(含答案解析)+听力音频+听力原文.docx
- 2024年江西省高考英语试卷(含答案解析)+听力音频+听力原文.docx
- 2024年安徽省高考英语试卷(含答案解析)+听力音频+听力原文.docx
- 2024年福建省高考英语试卷(含答案解析)+听力音频+听力原文.docx
- 2024年广东省高考英语试卷(含答案解析)+听力音频+听力原文.docx
- 2024年河北省高考英语试卷(含答案解析)+听力音频+听力原文.docx
- 2024年河南省高考英语试卷(含答案解析)+听力音频.docx
- 2024年湖北省高考英语试卷(含答案解析)+听力音频+听力原文.docx
- 2024年湖南省高考英语试卷(含答案解析)+听力音频+听力原文.docx
- 2024年江苏省高考英语试卷(含答案解析)+听力音频+听力原文.docx
文档评论(0)