版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、12022-1-1522022-1-153变量的两个物理意义变量的两个物理意义 变量的内容变量的内容变量的地址变量的地址2022-1-1545382022-1-155532004p=&c82022-1-156200420002022-1p = &a;52022-1-158a ab bp1p1p2p2p p6 68 8a=6,b=8a=6,b=8max=8,min=6max=8,min=6【例【例8.1】输入】输入a、b两个整数,两个整数,使用指针变量按大小顺序输出使用指针变量按大小顺序输出这两个整数。这两个整数。 2022-1-159a a、* *p1
2、p1b b、* *p2p2p1p1p2p2t t6 68 8a=8,b=6a=8,b=6max=8,min=6max=8,min=66 68 86 62022-1-1510P1=404,*p1=10P2=410,*p2=403020104050 只有当指针变量指向数组时指针的加减只有当指针变量指向数组时指针的加减运算才有意义。运算才有意义。 指针变量可加减一个整型表达式。如:指针变量可加减一个整型表达式。如:p1+、p2+3、p2-、p2-2。 指针的加减运算是以基类型为单位指针的加减运算是以基类型为单位(即(即sizeof(类型)类型)) )的的。 两个指针变量不能作加法运算,只有当两个指针
3、变量不能作加法运算,只有当两个指针变量指向同一数组时,进行指针变两个指针变量指向同一数组时,进行指针变量相减才有实际意义。如:量相减才有实际意义。如:p2-p1。2022-1-15113020104050 指向同一数组的两个指针可以进行关系指向同一数组的两个指针可以进行关系运算,表明它们所指向元素的相互位置关系运算,表明它们所指向元素的相互位置关系 。如:如:p2 p1、p2 = p1。 指针与一个整型数据进行比较是没有意指针与一个整型数据进行比较是没有意义的义的 。 不同类型指针变量之间比较是非法的不同类型指针变量之间比较是非法的。 NULL可以与任何类型指针进行可以与任何类型指针进行=、!
4、=的关系运算,用于判断指针是否为空指针的关系运算,用于判断指针是否为空指针 。2022-1-1512a0a0a9a92022-1-1513a0a0a9a92022-1-1514a a00a a9912345678910 1 2 3 4 5 6 7 8 9 10 1 2 3 4 5 6 7 8 9 102022-1-1515a a00a a99102022-1-1516a0a0a9a9a1a1 . . . . . . . . . . . .1 12 23 34 45 56 67 78 89 910102022-1-1517 输入输入a数组数组 for (p=a; pa+4; p+) pp=p f
5、or (q=p+1; q*q F pp=q T pp!=p F *pp*p 输出输出a数组数组图图8.9 选择法排序选择法排序N-S图图2022-1-15180 0101020201 1111121212 2121222223 313132323aa a00a a11a a22aa+1a+22022-1-15190 0101020201 1111121212 2121222223 313132323a0数组数组a1数组数组a2数组数组2022-1-15200 0101020201 1111121212 2121222223 313132323a a00a a11a a22a2022-1-152
6、10 0101020201 1111121212 2121222223 313132323a2022-1-15222022-1-15230 0101020201 1111121212 2121222223 313132323alplp+1lp+2 0 1 2 3 10 11 12 13 20 21 22 232022-1-15240 0101020201 1111121212 2121222223 313132323alplplplp 0 1 2 3 10 11 12 13 20 21 22 23 2022-1-1525字符串的两种表示方式:字符串的两种表示方式: 字符数组表示方式,字符串存放
7、在一维数组中,字符数组表示方式,字符串存放在一维数组中,引用时用数组名。引用时用数组名。 字符指针变量表示方式,字符指针变量存放字字符指针变量表示方式,字符指针变量存放字符串的首地址,引用时用指针变量名。符串的首地址,引用时用指针变量名。Good morning!Good night!2022-1-1526 将一个字符串赋给一个字符数组只能使用将一个字符串赋给一个字符数组只能使用strcpy函数函数 将字符串常量的首地址赋给指针变量,可使用赋值运将字符串常量的首地址赋给指针变量,可使用赋值运算符算符“=” How are you ?Fine,thanks.2022-1-1527 使用字符串输入
8、输出函数使用字符串输入输出函数gets和和puts; 在在scanf和和printf函数中使用函数中使用 %s格式实现。格式实现。 输入字符串时,函数参数:数组名、存有数组名的输入字符串时,函数参数:数组名、存有数组名的指针变量;指针变量; 输出字符串时,函数参数:数组名、存有字符串首输出字符串时,函数参数:数组名、存有字符串首地址的指针变量。地址的指针变量。 I love China! I love China! 2022-1-15282022-1-15292022-1-1530指针数组就是数组中的每个元素均为指针类型指针数组就是数组中的每个元素均为指针类型 2022-1-15312022-
9、1-1532利用字符指针数组处理长度不等的字符串,可节省利用字符指针数组处理长度不等的字符串,可节省存储空间。存储空间。 2022-1-1533整型值整型值整型变量整型变量整型变量地址整型变量地址一级指针变量一级指针变量一级指针变量地址一级指针变量地址二级指针变量二级指针变量 2022-1-1534a的内容的内容a&ap&ppp2022-1-1535pppppp2022-1-1536759 7775 75 2022-1-1537 2022-1-15382022-1-1539 由于指向二维数组的指针分为行指针和由于指向二维数组的指针分为行指针和元素指针,所以他们作为函数参数的形式
10、也元素指针,所以他们作为函数参数的形式也不同。不同。 2022-1-15402022-1-1541 指向二维数组元素的指针作函数参数指向二维数组元素的指针作函数参数时,是利用二维数组元素按行连续存储的的时,是利用二维数组元素按行连续存储的的特点,访问数组的每一个元素。特点,访问数组的每一个元素。被调函数的被调函数的形参必须定义为指向二维数组元素的指针变形参必须定义为指向二维数组元素的指针变量。量。2022-1-15422022-1-1543main函数只能有两个形参,并且这两个形参的函数只能有两个形参,并且这两个形参的类型也是固定的。第一个形参必须是整型变量,类型也是固定的。第一个形参必须是整
11、型变量,第二个形参可以定义为字符型指针数组,也可以第二个形参可以定义为字符型指针数组,也可以定义为二级字符指针变量,因此也可以写成定义为二级字符指针变量,因此也可以写成 main(int argc, char *argv)2022-1-1544 要调用带参数的主函数要调用带参数的主函数必须在操作系统环境下必须在操作系统环境下进行。假设进行。假设C语言源程序文件语言源程序文件file1.c,经过编译、,经过编译、连接生成一个可执行文件连接生成一个可执行文件file1.exe。在在DOS系统提系统提示符后键入示符后键入可执行文件名可执行文件名file1,即可执行该程序即可执行该程序 。2022-1
12、-15452022-1-1546C:file1 one two threeonetwothree 注意注意: : 命令行参数所传送的数据全部都是字符命令行参数所传送的数据全部都是字符串。即便传送的是数值,也是按字符串方式传送串。即便传送的是数值,也是按字符串方式传送给主函数。程序中使用这些参数时,还需要将数给主函数。程序中使用这些参数时,还需要将数字字符串转换成数值型数据。字字符串转换成数值型数据。C语言标准库函数语言标准库函数提供了一些相关的数据类型转换函数提供了一些相关的数据类型转换函数 。2022-1-1547 如果一个函数的返回值是指针,则称此函数如果一个函数的返回值是指针,则称此函数
13、为指针型函数。为指针型函数。 2022-1-15482022-1-15492022-1-1550 在在C C语言中,函数名具有与数组名类似的语言中,函数名具有与数组名类似的特性,数组名代表数组的首地址,特性,数组名代表数组的首地址,函数名代表函数名代表函数的起始地址函数的起始地址(即该函数的程序代码段在内(即该函数的程序代码段在内存中所占用的存储空间的首地址,也称函数入存中所占用的存储空间的首地址,也称函数入口)。因此也可以口)。因此也可以把函数名赋给一个函数指针把函数名赋给一个函数指针变量变量,使其成为,使其成为指向该函数的指针变量指向该函数的指针变量。函数函数名名则可以看成则可以看成是函数
14、指针常量是函数指针常量。 2022-1-1551 函数指针函数指针与与变量指针变量指针的共同之处是都可以做的共同之处是都可以做间接访问。间接访问。变量指针变量指针指向内存的数据存储区,通指向内存的数据存储区,通过间接存取运算访问目标变量;过间接存取运算访问目标变量;函数指针函数指针指向内指向内存的程序代码存储区,通过间接存取运算存的程序代码存储区,通过间接存取运算使程序使程序流程转移到指针所指向的函数入口流程转移到指针所指向的函数入口,取出函数的,取出函数的机器指令并执行函数,完成函数的调用。机器指令并执行函数,完成函数的调用。 2022-1-15522022-1-1553 将将作为参数,可在主调函数和被调作为参数,可在主调函数和被调函数之间将第三个函数作为参数传递,实现在被函数之间将第三个函数作为参数传递,实现在被函数中调用不同函数的目的,使被调函数成为通函数中调用不同函数的目的,使被调函数成为通用函数。用函数。 作函数参数时,作函数参数时,一定要定义为一定要定义为指向函数的指针变量,指向函数的指针变量,则可以是函数名或指则可以是函数名或指向函数的指针变量。向函数的指针变量。 Y f(x) (x2,f(x2) 0 x1 x x0 x2 X (x1,f(x1) 图8.21 弦截法求方程的根示意图
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 农业科技园区种植项目合作合同
- 大拖拉机配件购销合同
- 搭棚施工合同范本
- 委托房地产开发合同书模板
- 正规区域代理合同范本
- 房地产开发承包合同
- 国际贸易进出口英文合同范本
- 个人房屋装修合同标准范文
- 公共厕所的管理制度
- 白酒购买合同模板范文
- 小儿高热惊厥课件
- 陕西省2024年中考语文真题试卷【附答案】
- 河南省郑州市二七区2023-2024学年七年级下学期期末考试语文试题
- JB-T 8532-2023 脉冲喷吹类袋式除尘器
- 电网两票培训课件
- 山东省济宁市2023年中考数学试题(附真题答案)
- 班组建设工作汇报
- 供应链金融与供应链融资模式
- 工程类工程公司介绍完整x
- 板带生产工艺热连轧带钢生产
- 轮机备件的管理(船舶管理课件)
评论
0/150
提交评论