c语言教程(课件)第6章

c语言教程(课件)第6章

ID:43082124

大小:112.50 KB

页数:29页

时间:2019-09-29

c语言教程(课件)第6章_第1页
c语言教程(课件)第6章_第2页
c语言教程(课件)第6章_第3页
c语言教程(课件)第6章_第4页
c语言教程(课件)第6章_第5页
资源描述:

《c语言教程(课件)第6章》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、第六章指针地址和指针的概念指针是C中一个重要概念,也是C的重要特色,可以有效地表示复杂的数据结构,能动态分配内存,能直接处理内存地址等。指针的概念比较复杂,使用很灵活,不易掌握,因此要多做练习。6-1指针概述地址与指针地址与取地址运算C语言中变量、数组、函数等都占用一定的内存空间,地址是指该内存空间的第一个字节的地址。C语言中取地址运算符:&。指针与指针变量指针:就是地址,是变量的地址。指针变量:存放变量地址的变量。指针的类型与指针的定义指针所指向的对象的类型即是指针的类型。指针的定义:只要在变量名前加“*”即可。例:int*p表示p是一个指向整型变量的指针。注意:*表

2、示其后的变量是指针,指针变量是p而非*p。指针变量一般占2个字节,用来存放一个地址。例L6-0-1变量、地址、指针、指针的地址。指针变量的引用&运算符:取地址运算。*运算符:指针运算(指向运算,或间接运算),*p表示p所指向的变量。例L6-1&与*运算符。i110&i1p1i220&i2p2i110&i1p1i220&i2p2例L6-2使两个指针变量交换指向。i110&i1p1i220&i2p2i110&i1p1i220&i2p2例L6-3交换两个指针变量所指向变量的值。指向指针的指针intI,*p1,**p2;3i&ip1&p1p2例L6-3-2多重指针:从理论上讲,

3、可以有多重指针,但一般极易出错,不提倡使用多重指针。例L6-4多重指针。习题5-9统计单词与空格数。 习题5-14字符串转换为大写、小写(数组法) 习题5-14-2字符串转换为大写、小写(指针法)6-2指针与数组一维数组的指针表示a[i]:下标法访问数组元素。*(a+i):地址法访问数组元素。(a+i表示:从数组a的首地址开始的第i个元素。)例L6-5A[0]=1A[1]=3A[2]=5A[3]=7A[4]=9aa+1a+2a+3a+4ffd0ffd2ffd4ffd6ffd8注意:对数组a,不能用自增(减)进行运算(a++,a--),因为数组的首地址是一个常数。虽然

4、可用多种方法访问数组元素,效率不同,用指针访问的速度最快,它不要进行转换。用指针访问数组时(主要是赋值),一定要记住不能越界,否则可能带来严重后果。用指针访问数组时,因为总是从指针当前位置开始,所以要注意指针的当前值。(例L6-5的最后一次。)例L6-6输入若干个温度,求平均值。(用数组)例L6-6-2输入若干个温度,求平均值。(用指针)强调一维数组的两个结论C中,一维数组名代表该数组的起始地址。C中,一维数组的任何一个元素的地址,都可用其数组名加上一个偏移量来表示。这两个结论可以推广至任意维数组都适用。二维数组的指针表示法二维数组a可以看成是由以下元素构成的一个一维数

5、组:a[0],a[1],a[2],…a[i],…所以a[i]既是一个广义一维数组的元素,也是一个一维数组a[i]的名字(一维数组的首地址),所以a是指向a[i]起始地址的指针,因a[i]是一个一维数组名,即是一个一维数组的首地址,也就是指针,可见a是一个二级指针。二维数组元素及地址的引用:例L6-7-0含义表示形式第0行第1列元素地址a[0]+1,*a+1,*(a+0)+1,&a[0][1]第1行第2列元素地址a[1]+2,*(a+1)+2,&a[1][2]第1行第2列元素的值*(a[1]+2),*(*(a+1)+2),a[1][2]例L6-7指向数组元素的指针变量。指

6、向一维数组的指针int(*)p[5]:表示P是指向一个一维数组的指针(指向该数组的首地址)。P++表示将指针移向下一个一维数组(指向其首地址)。所以可用它处理二维数组,参见例L6-8。指针与字符串字符串是存放在字符数组中的,因此可用指针来访问字符中的字符。例L6-10用三种方式输出字符串:1、直接输出字符串数组string:printf(“%s”,string)2、直接用指向字符串的指针p:printf(“%s”,p)3、用指针逐个字符输出。直接用指针表示字符串:char*p=“CLanguage”;表示将字符串“CLanguage”存放在一连续的内存空间(以‘’)

7、结束,并将指针P指向该空间的首地址。上面的程序行也可写成两行:char*p;p=“CLanguage”;例L6-12-1指针指向的字符串与数组表示的字符串的区别虽然:chara[]=“CLanguage”;char*p=“CLanguage”;都可表示字符串,但两者概念并不相同:a[]表示是一个11个元素的字符数组,将CLanguage和‘’分别存入11个单元。a表示首地址,是一个常量,不能改变,如a++是错误的。P只表示一个地址,指向字符串CLanguage的首地址。P的值的是可以改变的,如:p++表示将指针向后移一个单元。指针数组

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。