数组字符串指针ppt课件.ppt

数组字符串指针ppt课件.ppt

ID:59440852

大小:1.44 MB

页数:54页

时间:2020-09-18

数组字符串指针ppt课件.ppt_第1页
数组字符串指针ppt课件.ppt_第2页
数组字符串指针ppt课件.ppt_第3页
数组字符串指针ppt课件.ppt_第4页
数组字符串指针ppt课件.ppt_第5页
资源描述:

《数组字符串指针ppt课件.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、指针(2) --数组、字符串指针主要内容二维数组与指针(2)1字符串与指针2指向函数的指针3重点数组名作为函数参数、字符串指针的使用难点数组作为函数参数、指向函数的指针1.二维数组与指针(1)1.1数组名作为函数参数(1)如:数组名可以作函数的实参和形参。main(){intarray[10];……f(array,10);……}f(intarr[],intn);{……}1.二维数组与指针(2)1.1数组名作为函数参数(2)数组名就是数组的首地址,实参向形参传送数组名实际上就是传送数组的地址,形参得到该地址后也指向同一数组

2、。这就好象同一件物品有两个彼此不同的名称一样。例10-1例10-2例10-3例10-41.二维数组与指针(3)1.2指向多维数组的指针和指针变量(1)多维数组的地址设有整型二维数组a[3][4]如下:01234567891011它的定义为:inta[3][4]={{0,1,2,3},{4,5,6,7},{8,9,10,11}};多维数组图示设数组a的首地址为1000,从二维数组的角度来看,a是二维数组名,a代表整个二维数组的首地址,也是二维数组第0行的首地址,等于1000。a+1代表第一行的首地址,等于1008。如图:例

3、10-5二维数组与指针(4)表示形式含义a二维数组名,数组首地址a[0],*(a+0),*a第0行第0列元素地址a+1第1行首地址a[1],*(a+1)第1行第0列元素地址a[1]+2,*(a+1)+2,&a[1][2]第1行第2列元素地址*(a[1]+2),*(*(a+1)+2),a[1][2]第1行第2列元素值1.二维数组与指针(5)把二维数组a分解为一维数组a[0],a[1],a[2]之后,设p为指向二维数组的指针变量。可定义为:int(*p)[4]它表示p是一个指针变量,它指向包含4个元素的一维数组。若指向第一个

4、一维数组a[0],其值等于a,a[0],或&a[0][0]等。而p+i则指向一维数组a[i]。从前面的分析可得出*(p+i)+j是二维数组i行j列的元素的地址,而*(*(p+i)+j)则是i行j列元素的值。1.二维数组与指针(6)指向一维数组的指针变量:指向一维数组指针变量的定义形式:类型说明符(*指针变量名)[长度]例10-6例10-71.二维数组与指针(7)1.3多维数组的指针作为函数参数例10-8例10-9返回主菜单2.字符串与指针(1)2.1字符串的表示形式(1)用字符数组存放一个字符串,然后输出该字符串。(2)

5、用字符串指针指向一个字符串例10-10例10-11例10-12例10-132.字符串与指针(2)2.2字符串指针作函数参数将一个字符串从一个函数传递到另一个函数,可以用地址传递的办法,即用字符数组名作参数或用指向字符串的指针变量作参数。例10-142.字符串与指针(3)2.3使用字符串指针变量与字符数组的区别用字符数组和字符指针变量都可实现字符串的存储和运算,但是两者是有区别的。在使用时应注意以下几个问题:①字符数组由若干元素组成,每个元素中放一个字符,而字符指针变量中存放的是地址(字符串的首地址),决不是将字符串放到字

6、符指针变量中。2.字符串与指针(4)在使用时应注意以下几个问题(续):②赋值方式。对字符数组只能对各个元素赋值,不能用以下方法对字符数组赋值。charstr[14];str=“IloveChina”;③对字符指针变量赋初值:char*a=“IloveChina”2.字符串与指针(5)在使用时应注意以下几个问题(续):④如果定义了一个字符数组,在编译时为它分配内存单元,它有确定的地址。而定义一个字符指针变量时,给指针变量分配内存单元,在其中可以放一个地址值。2.字符串与指针(6)在使用时应注意以下几个问题(续):⑤指针变量

7、的值是可以改变的。⑥用指针变量指向一个格式字符串,可以用它代替printf函数中的格式字符串。例10-15例10-16返回主菜单【例】已知字符串str,从中截取一子串。要求该子串是从str的第m个字符开始,由n个字符组成。思路:A:m位置后的字符数有可能不足n个,所以在循环读取字符时,若读到‘’停止截取,利用break语句跳出循环。B:输入的截取位置m大于字符串的长度,则子串为空。C:要求输入的截取位置和字符个数均大于0,否则子串为空。charc[80];voidmain(){char*p,*str="Thisisa

8、string.";inti,m,n;scanf("%d,%d",&m,&n);substring(str,m,n);printf("%s",c);}voidsubstring(char*str,intm,intn){if(m>strlen(str)

9、

10、n<=0

11、

12、m<=0)printf("NULL");els

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

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

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