C语言编程教程 第10章 指针.ppt

上传人:s****8 文档编号:67248778 上传时间:2022-12-24 格式:PPT 页数:62 大小:357.50KB
返回 下载 相关 举报
C语言编程教程 第10章 指针.ppt_第1页
第1页 / 共62页
C语言编程教程 第10章 指针.ppt_第2页
第2页 / 共62页
点击查看更多>>
资源描述

《C语言编程教程 第10章 指针.ppt》由会员分享,可在线阅读,更多相关《C语言编程教程 第10章 指针.ppt(62页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、C程序设计程序设计1/62C程序设计程序设计2/62一、一、基本概念基本概念二、二、指针变量的引用指针变量的引用 指针运算符指针运算符:&和和*的用法的用法 指针的运算指针的运算:算术、关系、赋值。算术、关系、赋值。指针变量作为函数的参数指针变量作为函数的参数三、数组与指针三、数组与指针 相关概念及定义相关概念及定义 数组的访问数组的访问 数组名作为函数参数数组名作为函数参数 多维数组与指针多维数组与指针教学要点教学要点C程序设计程序设计3/62四、四、字符串的指针和指向字符串的指针变量字符串的指针和指向字符串的指针变量 字符串的表示字符串的表示:字符数组与字符串指针:字符数组与字符串指针 字

2、符串指针作函数的参数字符串指针作函数的参数 字符指针变量与字符数组的区别字符指针变量与字符数组的区别五、五、函数的指针和指向函数的指针变量函数的指针和指向函数的指针变量六、六、返回指针值的函数返回指针值的函数七、七、指针数组与指向指针的指针指针数组与指向指针的指针八、八、指针的数据类型和指针运算指针的数据类型和指针运算教学要点教学要点C程序设计程序设计4/62基本概念1 1、变量定义:、变量定义:在编译时,为变量分配适当大小的内存单元。在编译时,为变量分配适当大小的内存单元。2 2、存储单元的地址:、存储单元的地址:给定的一个内存单元的字节偏移量(编号或地址)。给定的一个内存单元的字节偏移量(

3、编号或地址)。内存中每个字节具有一个地址内存中每个字节具有一个地址,用以区分不同的存储位置。用以区分不同的存储位置。3 3、存储单元的内容:、存储单元的内容:某一个内存单元中存放的数据就是这个内存单元的内容。这些某一个内存单元中存放的数据就是这个内存单元的内容。这些数据根据定义的变量的类型的不相同数据根据定义的变量的类型的不相同,占用内存的长度也不尽占用内存的长度也不尽相同相同.(变量的值)(变量的值)C程序设计程序设计5/62基本概念4 4、指针:、指针:即变量的地址。(如即变量的地址。(如2000H2000H、2001H2001H2009H2009H等)等)5 5、指针变量:、指针变量:含

4、义:用于存放指针(地址)的变量。含义:用于存放指针(地址)的变量。定义方法:定义方法:数据类型数据类型 *变量名变量名如:如:intint x=3;x=3;intint*pointer1;*pointer1;float*pointer2;float*pointer2;pointer1=&x;pointer1=&x;200020003pointer1pointer1*pointer1*pointer1x2000C程序设计程序设计6/621 1、数据类型:指针变量所指向目标单元的值的类型。、数据类型:指针变量所指向目标单元的值的类型。2 2、*:指针变量的定义符:指针变量的定义符3 3、变量名:目

5、标变量在内存中的位置(表示一个地址)、变量名:目标变量在内存中的位置(表示一个地址)如:如:pointer1=&x;pointer1=&x;4 4、指针变量的初始化:将指针变量指向一个具体的变量。指针变量的初始化:将指针变量指向一个具体的变量。如:如:intint x=3;x=3;intint*pointer1=&x;*pointer1=&x;float*pointer2=&y;float*pointer2=&y;char*pointer3=&z;char*pointer3=&z;数据类型 *变量名C程序设计程序设计7/621 1、&:&:取地址运算符:取地址运算符:作用:用于作用:用于变量名

6、变量名之前,表示该变量的存储地址。之前,表示该变量的存储地址。2 2、*:指针运算符指针运算符(间接访问间接访问)作用:用于作用:用于指针变量名指针变量名之前,获取该指针所指目标单元的值。之前,获取该指针所指目标单元的值。例如例如:main():main()intint a,b,*point1,*point2;a,b,*point1,*point2;a=100;b=200;point1=&a;point2=&b;a=100;b=200;point1=&a;point2=&b;printf(“%d,%dn”,aprintf(“%d,%dn”,a,*point2);,*point2);3 3、&和

7、和*优先级相同优先级相同,“,“右结合右结合”:如:如:若若point1=&a;point1=&a;则则&*point1&*point1等价于等价于&a;&a;*&a*&a 等价于等价于 a a;(*point1)+(*point1)+等价于等价于a+;a+;指针运算符C程序设计程序设计8/62指针的运算1 1、算术运算、算术运算含义:对于地址的运算,只能进行整型数据的加、减运算。含义:对于地址的运算,只能进行整型数据的加、减运算。规则:规则:指针变量指针变量指针变量指针变量+n n n n 意味着将指针指向的当前变量向前或后的第意味着将指针指向的当前变量向前或后的第n n个个变变量单元。量单

8、元。例例10101 1:2 2、关系运算、关系运算作用:用于识别目标变量在内存中的前后位置。作用:用于识别目标变量在内存中的前后位置。用法:用法:intint i,j;i,j;intint*p1=&i,*p2=&j;*p1=&i,*p2=&j;p1p2 p1p2 用于识别变量用于识别变量i,ji,j在内存的排列顺序。在内存的排列顺序。3 3、赋值运算、赋值运算作用:对指针变量的赋值运算,将改变指针变量的指向作用:对指针变量的赋值运算,将改变指针变量的指向 例例10102 2:4 4、例例10103 3:ijp1p210001002C程序设计程序设计9/62200020022004地址k kj

9、ji ip=&ip=&i结论:结论:指针变量的算术运算结果是改变指指针变量的算术运算结果是改变指针目标的指向;针目标的指向;指针变量算术运算的过程:指针变量算术运算的过程:p p p p新新新新 =p=p=p=p原值原值原值原值 +n*+n*+n*+n*sizeofsizeofsizeofsizeof(类型)类型)类型)类型)提供指针的目的:提供指针的目的:使访问者与访问对象相隔离使访问者与访问对象相隔离改进对成批数据的访问速度改进对成批数据的访问速度例例101C程序设计程序设计10/6220002002地址j ji ip=&ip=&i要点:要点:应随时了解指针变量的目标指向;应随时了解指针变

10、量的目标指向;不允许直接对指针变量赋常量值。不允许直接对指针变量赋常量值。例例102C程序设计程序设计11/62例例10_3:10_3:分析下面程序的功能分析下面程序的功能.&a7&b8p2p1ab&b7&a8p2p1bapC程序设计程序设计12/621 1、含义:函数的参数不仅可以是基本数据类型,还可以、含义:函数的参数不仅可以是基本数据类型,还可以是指针类型。是指针类型。2 2、功能:将变量的地址传送到另一个函数中。、功能:将变量的地址传送到另一个函数中。例例10104 43 3、结论:结论:4 4、例例10105 5、10106 6、10107 7、10108 8:指针变量作为函数参数指

11、针变量作为参数指针变量作为参数,从调用函数到被调用函数传递的不是从调用函数到被调用函数传递的不是一个变量而是一个变量而是变量的地址变量的地址变量的地址变量的地址;指针变量作为函数的参数,从实参到形参的数据传递仍指针变量作为函数的参数,从实参到形参的数据传递仍然遵循然遵循“单向值传递单向值传递单向值传递单向值传递”的原则的原则,此时传递的是地址。此时传递的是地址。C程序设计程序设计13/62例例10_410_4:分析下面程序:分析下面程序C程序设计程序设计14/62例例10_5:10_5:分析下面的程序写出结果分析下面的程序写出结果运行结果为:运行结果为:5,3 3,5C程序设计程序设计15/6

12、2例例10_6:10_6:分析下面的程序写出结果分析下面的程序写出结果运行结果为:运行结果为:5,3 3,5C程序设计程序设计16/62例例10_7:10_7:分析下面的程序写出结果分析下面的程序写出结果运行结果为:运行结果为:5,3 5,3C程序设计程序设计17/62例例10_8:10_8:输入输入a a、b b、c c三个整数,按三个整数,按从大到小的从大到小的顺序输出。顺序输出。输入:输入:9 9,0 0,1010输出:输出:10,9,0C程序设计程序设计18/62一、相关概念一、相关概念 数组数组的指针的指针:数组的起始地址(即数组名)。它是一个恒定值指针。数组的起始地址(即数组名)。

13、它是一个恒定值指针。数组元素数组元素的指针的指针:数组元素的地址。数组元素的地址。指向数组的指针变量指向数组的指针变量:用于存放数组的起始地址或某一数组元素地址的用于存放数组的起始地址或某一数组元素地址的变量。变量。二、定义:二、定义:与一般指针变量的定义方法相同。与一般指针变量的定义方法相同。如:如:intint a10,*p1,*p2;a10,*p1,*p2;p1=a;p1=a;/p1 /p1为为指向数组指向数组的指针的指针 p2=&a2;p2=&a2;/p2 /p2为为指向数组元素指向数组元素的指针的指针 在定义指针变量时可以直接赋初值。在定义指针变量时可以直接赋初值。相关概念及定义a0

14、a0a ap1a1a1a2a2a9a9aiaip2p2C程序设计程序设计19/62 引用数组元素可以用下标法或指针法。使用指针方法能引用数组元素可以用下标法或指针法。使用指针方法能使目标程序所占内存少、运行速度快。使目标程序所占内存少、运行速度快。一、基本方法一、基本方法1 1、将指针指向数组中的某个元素;将指针指向数组中的某个元素;2 2、利用利用*(p(p+n)n)获得数组元素的值。获得数组元素的值。如:如:intint a9=0,1,2,3;a9=0,1,2,3;intint*p=a;*p=a;printf(“%dprintf(“%d”,*p);”,*p);printf(“%dprint

15、f(“%d”,*p+);”,*p+);printf(“%dprintf(“%d”,*p-);”,*p-);3 3、例例10109 9、10101010二、二、要点:要点:数组的访问a0a0*(p+n-1)*(p+n-1)a aa1a1a2a2an-1an-1p+p+p+p+p=ap=aaiaip+ip+i或或a+ia+ip+n-1p+n-1*(p+i)(p+i)或或pipiC程序设计程序设计20/62例例10_9:10_9:输出数组的全部元素。输出数组的全部元素。C程序设计程序设计21/62例例10_9:10_9:输出数组的全部元素。输出数组的全部元素。C程序设计程序设计22/62例例10_1

16、0:10_10:下面的程序的输出结果是什么下面的程序的输出结果是什么?运行结果为:运行结果为:6C程序设计程序设计23/62要 点1 1、指针变量可以实现自身值的改变:、指针变量可以实现自身值的改变:如:如:p+;p+;2 2、应注意指针变量的当前值。、应注意指针变量的当前值。3 3、指针变量可以指向数组以后的内存单元。、指针变量可以指向数组以后的内存单元。4 4、注意以下的指针运算:注意以下的指针运算:若:若:intint a10,*p=a;a10,*p=a;则:则:p+p+等价于等价于&a1&a1 *p+*p+等价于等价于*(p+)(p+)但但*(p+)(p+)与与*(+p)(+p)却不同

17、却不同 (*p p)+等价于等价于 a0+a0+C程序设计程序设计24/62数组名作函数的参数一一.数组元素作函数的参数。数组元素作函数的参数。二二.数组名作为函数的参数:数组名作为函数的参数:实参与形参操作的是内存中的同一段地址单元实参与形参操作的是内存中的同一段地址单元,这样在这样在被调用函数中对数组元素的内容的改变将会反映到调用函数被调用函数中对数组元素的内容的改变将会反映到调用函数中中(即地址传递或双向传递)即地址传递或双向传递)即地址传递或双向传递)即地址传递或双向传递)三三.数组作函数的参数时数组作函数的参数时,实参与形参还可用指针的形式实参与形参还可用指针的形式给出给出(同样是地

18、址传递)(同样是地址传递)(同样是地址传递)(同样是地址传递)用数组名与数组的指针用数组名与数组的指针组合形式可以是组合形式可以是:四、四、例例10101111、10101212、10101313、10101414:C程序设计程序设计25/62实参实参数组名数组名指针指针形参形参数组名数组名指指 针针数组名数组名指指 针针C程序设计程序设计26/62例例10_11 10_11 将数组将数组a a中的中的n n个整数按相反的顺序存放。个整数按相反的顺序存放。C程序设计程序设计27/62例例10_12:10_12:下面程序的输出结果是下面程序的输出结果是:运行结果为:运行结果为:024C程序设计程

19、序设计28/62例例10_13:10_13:分析分析以下程序的输出结果。以下程序的输出结果。运行结果为:运行结果为:87259C程序设计程序设计29/62例例10_14:10_14:分析程序写出结果分析程序写出结果.运行结果为:运行结果为:35745C程序设计程序设计30/62多维数组与指针多维数组与指针一、多维数组的地址一、多维数组的地址 例:例:intint a34;a34;二、指向二维数组的指针二、指向二维数组的指针1 1、指向二维指向二维数组元素数组元素的指针的指针2 2、指向二维指向二维数组行数组行的指针的指针3 3、多维数组的指针作函数的参数多维数组的指针作函数的参数C程序设计程序

20、设计31/62多维数组的地址多维数组的地址a1a2a00a00a01a01a02a02a03a03a20a20a21a21a11a11a22a22a12a12a13a13a23a23a10a10a0aa00a00a03a03a12a12a10a10a11a11a21a21a13a13a20a20a22a22a23a23a02a02a01a01aa0a1a2二维数组的地址:二维数组的地址:a,a,二维数组行的地址:二维数组行的地址:a0,a1,a2a0,a1,a2,a+ia+i二维数组元素的地址:二维数组元素的地址:&a00,&a00,&aij,ai+j&aij,ai+j二维数组元素值:二维数组

21、元素值:aij,*(ai+j)aij,*(ai+j)*(*(a+i)+j)*(*(a+i)+j)C程序设计程序设计32/62要要 点点ba ai i和和 aiai 是不同的。虽然它们都表示地址,且指向是不同的。虽然它们都表示地址,且指向同一位置,但级别不同:同一位置,但级别不同:a ai i代表行地址,级别高;代表行地址,级别高;a a ii代表列地址,级别低。代表列地址,级别低。b用列地址表示数组元素:对列地址直接用复引用运算符用列地址表示数组元素:对列地址直接用复引用运算符*就表示数组元素。就表示数组元素。b用行地址表示数组元素:首先把行地址转换为列地址,用行地址表示数组元素:首先把行地址

22、转换为列地址,再进一步按列地址的方法引用元素。把行地址转换为列再进一步按列地址的方法引用元素。把行地址转换为列地址时,只要在它的前面加个地址时,只要在它的前面加个“*”号即可。号即可。C程序设计程序设计33/62小小 结结表示形式表示形式 a a a0,*(a+0),*aa0,*(a+0),*aa+1a+1a1,*(a+1)a1,*(a+1)a1+2,*(a+1)+2 a1+2,*(a+1)+2&a12&a12*(a1+2),*(a1+2),*(*(a+1)+2),*(*(a+1)+2),a12a12 含义含义二维数组名二维数组名,数组首地址数组首地址第第0 0行第行第0 0列元素的地址列元素

23、的地址第第1 1行首地址行首地址第第1 1行第行第0 0列元素的地址列元素的地址第第1 1行第行第2 2列元素的地址列元素的地址 第第1 1行第行第2 2列元素的值列元素的值C程序设计程序设计34/621 1、含义:含义:一个指针变量可以指向二维数组的元素,而二维数组一个指针变量可以指向二维数组的元素,而二维数组的元素也可以表示成指针的形式。的元素也可以表示成指针的形式。2 2、例、例10_15:10_15:分析以下的程序。分析以下的程序。指向二维数组元素的指针指向二维数组元素的指针运行结果为:运行结果为:3,1,C程序设计程序设计35/62例例10_16:10_16:分析以下的程序。分析以下

24、的程序。C程序设计程序设计36/621 1、含义:、含义:指针所指的是包含指针所指的是包含m m个元素的一维数组。个元素的一维数组。也即指向二维数组行的指针也即指向二维数组行的指针2 2、表示方法:、表示方法:数据类型数据类型数据类型数据类型 (*指针变量)指针变量)指针变量)指针变量)数组元素个数数组元素个数数组元素个数数组元素个数 3 3、引用方法:、引用方法:例例10101717、10101818指向二维数组行的指针指向二维数组行的指针C程序设计程序设计37/62例例10_17:10_17:分析以下的程序分析以下的程序1 17 713139 91111191915151717212123

25、234 43 3p,aa0a1a2p+1p+2*(*(p+i)+j)C程序设计程序设计38/62对对*(*(p+i)+j)(*(p+i)+j)的理解:的理解:p+i p+i 相当于相当于a a数组的第数组的第i i行的首地址行的首地址;*(p+i)*(p+i)相当于相当于a a数组的第数组的第i i行第行第0 0个元素的地址个元素的地址;等价于等价于ai;ai;*(p+i)+j*(p+i)+j 相当于相当于a a数组第数组第i i行第行第j j列的元素的地址列的元素的地址;等价于等价于&aij&aij 等价于等价于pi+jpi+j 等价于等价于ai+jai+j*(*(p+i)+j)*(*(p+

26、i)+j)等价于等价于aijaijC程序设计程序设计39/62例例10_18:10_18:分析以下的程序分析以下的程序运行结果为:运行结果为:6C程序设计程序设计40/621.1.二维数组名作函数的参数:二维数组名作函数的参数:例例10_1910_19:分析以下的程序:分析以下的程序二维数组的指针作函数的参数二维数组的指针作函数的参数运行结果为:运行结果为:5C程序设计程序设计41/622.2.指向二维数组的行指针作函数的参数指向二维数组的行指针作函数的参数例例10_20:10_20:分析以下的程序分析以下的程序运行结果为:运行结果为:6C程序设计程序设计42/621.1.用字符数组实现用字符

27、数组实现main()main()static char static char strstr=“I am a student.”;=“I am a student.”;puts(strputs(str););说明:说明:strstr是数组名是数组名,代表数组的首地址代表数组的首地址,stristri 代表数组的第代表数组的第i i个元素个元素,stristri 等价于等价于*(str+istr+i).).2.2.用用字符串指针字符串指针实现实现main()main()char*char*strstr=“I am a student.”;=“I am a student.”;puts(strpu

28、ts(str););字符串的表示方法字符串的表示方法C程序设计程序设计43/621 1、字符串指针的作用:用来描述一个字符串。、字符串指针的作用:用来描述一个字符串。方法:方法:char*char*strstr=“I am a student.”;=“I am a student.”;2 2、物理含义:将字符串的起始地址赋给指针变量物理含义:将字符串的起始地址赋给指针变量strstr,而不是将字符串的内容赋值给它而不是将字符串的内容赋值给它而不是将字符串的内容赋值给它而不是将字符串的内容赋值给它。char*char*strstr;strstr=“I am a student.”;=“I am

29、a student.”;3 3、利用字符串的指针变量对字符串进行输入与输出。、利用字符串的指针变量对字符串进行输入与输出。puts(),gets()puts(),gets()scanf(),printfscanf(),printf()()的的%s%s输出格式。输出格式。4 4、例例10102121:字符串指针字符串指针C程序设计程序设计44/62例例10_21:10_21:分析以下的程序的结果分析以下的程序的结果运行运行结果:结果:gaC程序设计程序设计45/621.1.用字符数组作函数的参数(用字符数组作函数的参数(例例10_2210_22)字符串指针作函数的参数字符串指针作函数的参数运行结

30、果为:运行结果为:ihgfedcbaC程序设计程序设计46/622.2.用字符指针作函数的参数(用字符指针作函数的参数(例例10_2210_22)出错出错C程序设计程序设计47/621.1.字符数组由若干个元素组成字符数组由若干个元素组成,每个元素存放一个字每个元素存放一个字符符,而字符指针存放的地址而字符指针存放的地址(当处理字符串时存放的当处理字符串时存放的是字符串的地址是字符串的地址););2.2.赋初值方式不同赋初值方式不同 1 1)字符数组)字符数组(只有静态字符数组和全局字符数组可以赋初值只有静态字符数组和全局字符数组可以赋初值)static char static char st

31、rstr=“I am a student.”;=“I am a student.”;2 2)字符指针)字符指针 char*char*strstr=“I am a student.”;=“I am a student.”;字符指针与字符数组的区别字符指针与字符数组的区别C程序设计程序设计48/623.3.赋值方式不同赋值方式不同 1 1)对于字符数组赋值不能使用以下的方法)对于字符数组赋值不能使用以下的方法:char str10;char str10;strstr=“book”;=“book”;2 2)对于字符类型的指针变量可以使用以下的方法)对于字符类型的指针变量可以使用以下的方法:char*

32、char*strstr;strstr=“This is a book.”;=“This is a book.”;4.4.字符指针变量在使用之前必须初始化,即使其指向一个具体的存字符指针变量在使用之前必须初始化,即使其指向一个具体的存储单元。储单元。5.5.指向字符类型的指针变量可以用指针的形式表示指向字符类型的指针变量可以用指针的形式表示,也可以用下标也可以用下标的形式表示。的形式表示。例例10102323:C程序设计程序设计49/62例例10_23:10_23:分析以下的程序分析以下的程序运行结果:运行结果:student.student.C程序设计程序设计50/62例例10_23:10_2

33、3:分析以下的程序分析以下的程序运行结果:运行结果:student.studentC程序设计程序设计51/62函数的指针和函数的指针和指向函数的指针变量指向函数的指针变量一、概念:一、概念:1 1、函数的指针:函数在内存中的入口地址(用函数名表示)、函数的指针:函数在内存中的入口地址(用函数名表示)2 2、指向函数的指针变量:、指向函数的指针变量:1 1)含义:用于存放函数名的变量。)含义:用于存放函数名的变量。2 2)定义方法:)定义方法:double(*f)(),x;double(*f)(),x;f=sin;x=(*f)(30*3.14159/180.0);f=sin;x=(*f)(30*

34、3.14159/180.0);3)3)要点:不能将要点:不能将(*f)()(*f)()写成写成*f()f()。二、二、用指向函数的指针变量作函数参数用指向函数的指针变量作函数参数1 1、含义:函数名或指向函数的指针作为函数的参数,将函数的入、含义:函数名或指向函数的指针作为函数的参数,将函数的入口地址传送给对应的形参指针,使其也指向指定的函数。口地址传送给对应的形参指针,使其也指向指定的函数。2 2、例例10102424:C程序设计程序设计52/62例例10_24:10_24:分析以下的程序分析以下的程序运行结果为:运行结果为:1.731927,0.577391C程序设计程序设计53/62返回

35、指针值的函数返回指针值的函数一、一、含义:含义:函数的返回值类型可以是基本数据类型,也可以是指针,函数的返回值类型可以是基本数据类型,也可以是指针,即一个地址。即一个地址。二、二、定义方法与使用要点定义方法与使用要点1 1、方法:、方法:类型标识符类型标识符类型标识符类型标识符*函数名(参数表)函数名(参数表)函数名(参数表)函数名(参数表)如:如:intint*a(x,y);*a(x,y);将返回一个指向整型数据的指针。将返回一个指向整型数据的指针。2 2、要点:请区分:、要点:请区分:intint*a(x,y);*a(x,y);与与 intint(*a)(x,y);(*a)(x,y);的不

36、同含义。的不同含义。三、三、例例10102525C程序设计程序设计54/62例例10_25:10_25:有三个学生,每位学生有有三个学生,每位学生有4 4门成绩,要求用户在输门成绩,要求用户在输入学生序号后,能输出该学生的全部成绩。入学生序号后,能输出该学生的全部成绩。C程序设计程序设计55/62指针数组与指向指针的指针指针数组与指向指针的指针一、一、指针数组指针数组1 1、概念:数组元素均为指针类型数据的数组。、概念:数组元素均为指针类型数据的数组。2 2、定义方法:、定义方法:类型标识符类型标识符类型标识符类型标识符*数组名数组名数组名数组名 数组长度数组长度数组长度数组长度 如:如:in

37、tint*p4;*p4;3 3、要点要点:请区别请区别intint*p4*p4与与intint(*p)4(*p)4的不同。的不同。例例10102626:二、二、指向指针的指针指向指针的指针1 1、含义:用于存放指针变量地址的变量。、含义:用于存放指针变量地址的变量。2 2、定义方式:、定义方式:intint i,*p,*q;i,*p,*q;3 3、例例10102727:三、三、指针数组作指针数组作mainmain()()的形参的形参C程序设计程序设计56/62例例10_26:10_26:将若干个字符串按字母顺序由小到大输出。将若干个字符串按字母顺序由小到大输出。void sort();void

38、 sort();void print();void print();C程序设计程序设计57/62C程序设计程序设计58/62例例10_27:10_27:分析以下的程序分析以下的程序运行结果:运行结果:1 3 5 7 9 C程序设计程序设计59/62指针数组作指针数组作 main()的形参的形参一、处于操作命令状态下一、处于操作命令状态下main()main()中的两个参数:中的两个参数:1 1、argcargc:为命令行参数的个数(整型数据):为命令行参数的个数(整型数据)2 2、argvargv:为指向命令行字符串的指针数组。为指向命令行字符串的指针数组。二、应用二、应用例例10102828

39、:输出:输出:file1 china Beijing输入:输入:file1 china Beijingfile1 china BeijingC程序设计程序设计60/62指针的数据类型和指针运算指针的数据类型和指针运算b指针的数据类型指针的数据类型b指针变量的空值指针变量的空值bVoidVoid型指针:型指针:void*p;void*p;p p指针的类型是未指定的抽象类型。指针的类型是未指定的抽象类型。如:如:char*p1;char*p1;void*p2;void*p2;.使用时对使用时对p2p2要进行强制类型转换要进行强制类型转换 p1=(char*)p2;p1=(char*)p2;C程序设

40、计程序设计61/62例例10_29:10_29:分析下面的程序分析下面的程序,写出结果写出结果.运行结果:运行结果:12,7C程序设计程序设计62/62指针的数据类型指针的数据类型 定义定义定义定义 含义含义含义含义intint i;i;i i为整型变量为整型变量intint an;an;a a为含为含n n个元素的数组个元素的数组 intint f();f();f f为函数为函数,返回值类型为整型,返回值类型为整型intint*p;*p;p p为指向整型数据的指针变量为指向整型数据的指针变量intint(*p)n;(*p)n;p p为指向含为指向含n n个元素的一维数组指针变量个元素的一维数组指针变量intint*pn;*pn;p p为指针数组,含为指针数组,含n n个个指向整型数据的指针变量指向整型数据的指针变量intint*p();*p();p p为返回指针值的函数为返回指针值的函数intint(*p)();(*p)();p p为指向函数的指针,返回一个整型值为指向函数的指针,返回一个整型值intint*p;*p;p p为指向指针的指针变量为指向指针的指针变量

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 生活休闲 > 生活常识

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁