[其它考试]二级C语言考试资料大全.ppt
《[其它考试]二级C语言考试资料大全.ppt》由会员分享,可在线阅读,更多相关《[其它考试]二级C语言考试资料大全.ppt(33页珍藏版)》请在三一办公上搜索。
1、第十章 指针,C程序设计中使用指针可以:使程序简洁、紧凑、高效有效地表示复杂的数据结构动态分配内存得到多于一个的函数返回值,注意:内存单元的地址与内存单元中的数据是两个完全不同的概念。内存地址内存中存储单元的编号,10.1 指针的概念,变量与地址,程序中:int i;float k;,内存中每个字节有一个编号-地址,i,k,编译或函数调用时为其分配内存单元,变量地址系统分配给变量的内存单元的起始地址。计算机在遇到变量定义语句时,便将变量登录到“变量表”中。该表的关键属性有两个:一是“变量名”,二是该变量在内存空间中的“地址(addr)”。“变量表”类似于旅社的旅客登记表,它记录了每个入住客人的
2、姓名(变量名)、房间号(地址)、几人间(变量占用的内存大小),3 6 92000:,内存用户数据区,:,ijki_p,变量值的存取通过变量在内存中的地址进行存取变量值的方式可以有两种:1、直接访问直接利用变量的地址进行存取如:i=2,j=6,k=9。通过变量i、j、k 来访问存储单元。2、间接访问 如变量 i,不知道其值及地址,而只知道它的地址放在3010、3011中,因此可通过存放地址的单元找到变量 i 的值(即:通过另一变量访问该变量的值),此为间接访问。语言规定:在程序中可以定义一种特殊的变量(称为指针变量),用来存放其它变量的地址。,指针与指针变量指针:一个变量的地址指针变量:专门存放
3、变量地址的变量叫,2000,指针,指针变量,变量的内容,变量的地址,&与*运算符含义,含义:取变量的地址单目运算符优先级:2结合性:自右向左,含义:取指针所指向变量的内容单目运算符优先级:2结合性:自右向左,i_pointer-指针变量,它的内容是地址量*i_pointer-指针的目标变量,它的内容是数据&i_pointer-指针变量占用内存的地址,i=*i_pointer=*(&i),i_pointer=&i,10.2 指针变量,指针变量的定义一般形式:数据类型*指针名;,合法标识符,指针的目标变量的数据类型,表示定义指针变量不是*运算符,例 int*p1,*p2;float*q;,注意:1
4、、int*p1,*p2;与 int*p1,p2;2、指针变量名是p1,p2,不是*p1,*p23、指针变量只能指向定义时所规定类型的变量4、指针变量定义后,变量值不确定,应用前必须先赋值,指针变量的初始化一般形式:存储类型 数据类型*指针名=初始地址值;,赋给指针变量,不是赋给目标变量,例 int i;int*p=,变量必须已说明过类型应一致,例 int i;int*p=,用已初始化指针变量作初值,例 main()int i=10;int*p;*p=i;printf(“%d”,*p);,危险!,例 main()int i=10,k;int*p;p=,指针变量必须先赋值,再使用,例 输入两个数,
5、并使其从大到小输出,main()int*p1,*p2,*p,a,b;scanf(%d,%d,运行结果:a=5,b=9 max=9,min=5,5,2006,9,2008,2006,2008,2006,指针变量作为函数参数地址传递特点:共享内存,“双向”传递,swap(int x,int y)int temp;temp=x;x=y;y=temp;main()int a,b;scanf(%d,%d,例 将数从大到小输出,5,9,5,5,9,COPY,指针变量作为函数参数地址传递特点:共享内存,“双向”传递,swap(int x,int y)int temp;temp=x;x=y;y=temp;ma
6、in()int a,b;scanf(%d,%d,例 将数从大到小输出,值传递,5,9,运行结果:5,9,swap(int*p1,int*p2)int p;p=*p1;*p1=*p2;*p2=p;main()int a,b;int*pointer_1,*pointer_2;scanf(%d,%d,5,9,2000,2002,5,9,COPY,5,例 将数从大到小输出(用指针类型的数据作函数参数),swap(int*p1,int*p2)int p;p=*p1;*p1=*p2;*p2=p;main()int a,b;int*pointer_1,*pointer_2;scanf(%d,%d,5,9,2
7、000,2002,5,9,例 将数从大到小输出(用指针类型的数据作函数参数),运行结果:9,5,地址传递,swap(int*p1,int*p2)int*p;*p=*p1;*p1=*p2;*p2=*p;main()int a,b;int*pointer_1,*pointer_2;scanf(%d,%d,swap(int*p1,int*p2)int*p;p=p1;p1=p2;p2=p;main()int a,b;int*pointer_1,*pointer_2;scanf(%d,%d,1指针处理下面问题:将两个整数的值交换。2用指针处理下面问题:输入三个整数,按从小到大的顺序输出。,10.3 指针
8、与数组数组的指针是指数组的起始地址,数组元素的指针是数组元素的地址。指向数组元素的指针变量,例 int array10;int*p;p=,数组名是表示数组首地址的地址常量,指针的算术运算:pi p id(i为整型数,d为p指向的变量所占字节数)p+,p-,p+i,p-i,p+=i,p-=i等若p1与p2指向同一数组,p1-p2=两指针间元素个数(p1-p2)/dp1+p2 无意义,例 p指向float数,则 p+1 p+1 4,例 p指向int型数组,且p=则p+1 指向a1,例 int a10;int*p=,例 int a10;int*p1=,1,数组元素表示方法,变址运算符ai*(a+i)
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 其它考试 其它 考试 二级 语言 资料 大全
链接地址:https://www.31ppt.com/p-6034226.html