C语言程序设计 教学课件 作者 郑山红 李万龙 宋立明 侯秀萍 第6章 指针.ppt

C语言程序设计 教学课件 作者 郑山红 李万龙 宋立明 侯秀萍 第6章 指针.ppt

ID:50320413

大小:1.49 MB

页数:91页

时间:2020-03-08

C语言程序设计 教学课件 作者 郑山红 李万龙 宋立明 侯秀萍 第6章 指针.ppt_第1页
C语言程序设计 教学课件 作者 郑山红 李万龙 宋立明 侯秀萍 第6章 指针.ppt_第2页
C语言程序设计 教学课件 作者 郑山红 李万龙 宋立明 侯秀萍 第6章 指针.ppt_第3页
C语言程序设计 教学课件 作者 郑山红 李万龙 宋立明 侯秀萍 第6章 指针.ppt_第4页
C语言程序设计 教学课件 作者 郑山红 李万龙 宋立明 侯秀萍 第6章 指针.ppt_第5页
资源描述:

《C语言程序设计 教学课件 作者 郑山红 李万龙 宋立明 侯秀萍 第6章 指针.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、第6章指针第6章指针本章目标了解地址和指针的概念,指针在函数中的应用熟悉指针的定义和引用方法掌握指针与数组、指针与字符串综合的程序设计方法掌握使用指针灵活处理问题6.1指针变量地址和指针的概念为了说清楚什么是指针,必须弄清楚数据在内存中是如何存储的,又是如何读取的。如果在程序中定义了一个变量,在编译时就给这个变量分配内存单元。系统根据程序中定义的变量类型,分配一定长度的空间。例如,一般微机使用的C系统为整型变量分配2个字节,对实型变量分配4个字节,对字符型变量分配1个字节。内存区的每一个字节有一个编号,这就是“地址”。在地址所标志的内存单元中可以存放数据。如图6.1所示。6.1指针变量图

2、6.16.1指针变量“直接访问”方式:按变量地址存取变量值的方式。“间接访问”方式:将变量i的地址存放在另一个变量中,然后通过该变量访问变量i。下图是直接访问和间接访问的示意图。6.1指针变量6.1指针变量由以上知识可知,一个变量的地址称为该变量的“指针”。例如,地址2000是变量i的指针。如果有一个变量专门用来存放另一变量的地址(即指针),则它称为“指针变量”。上述的i_pointer就是一个指针变量。指针变量的值(即指针变量中存放的值)是指针(地址)。请区分“指针”和“指针变量”这两个概念。例如,可以说变量i的指针是2000,而不能说i的指针变量是2000。6.1指针变量如前所述,变

3、量的指针就是变量的地址。存放变量地址的变量是指针变量。为了表示指针变量和它所指向的变量之间的联系,在程序中用“*”符号表示“指向”,例如,i_pointer代表指针变量,而*i_pointer是i_pointer所指向的变量,见下图6.1指针变量指针变量的定义定义指针变量的一般形式为:基类型*指针变量名如:inti,j;//普通变量int*pointer_1,*pointer_2;6.1指针变量那么,怎样使一个指针变量指向另一个变量呢?下面用赋值语句使一个指针变量指向一个整型变量:pointer_1=&i;pointer_2=&j;将变量i的地址存放到指针变量pointer_1中,因此p

4、ointer_1就“指向”了变量i。同样,将变量j的地址存放到指针变量pointer_2中,因此pointer_2就“指向”了变量j。6.1指针变量在定义指针变量时要注意两点:(1)指针变量前面的“*”,表示该变量的类型为指针型变量。注意:指针变量名是pointer_1、pointer_2,而不是*pointer_1、*pointer_2。这是与以前所介绍的定义变量的形式不同的。(2)在定义指针变量时必须指定基类型。6.1指针变量指针变量的引用请牢记,指针变量中只能存放地址(指针),不要将一个整型量(或任何其他非地址类型的数据)赋给一个指针变量。下面的赋值是不合法的:pointer_1=

5、100;(pointer_1为指针变量,100为整数)有两个有关的运算符:(1)&:取地址运算符。(2)*:指针运算符(或称“间接访问”运算符)。6.1指针变量例6.1通过指针变量访问整型变量。main(){inta,b;int*pointer-1,*pointer-2;a=100;b=10;pointer-1=&a;//把变量a的地址赋给pointer-1pointer-2=&b;//把变量b的地址赋给pointer-2printf("%d,%d",a,b);printf("%d,%d",*pointer-1,*pointer-2);}6.1指针变量下面对“&”和“*”运算符再

6、做些说明:如果已执行了“pointer-1=&a;”语句,则:(1)&*pointer-1的含义等价于&a,即变量a的地址。(2)*&a的含义等价于变量a(3)(*pointer_1)++相当于a++,注意括号是必要的。6.1指针变量例6.2对输入的两个整数按大小顺序输出。voidmain(){int*p1,*p2,*p,a,b;scanf("%d,%d",&a,&b);p1=&a;p2=&b;if(a<b){p=p1;p1=p2;p2=p;}printf("a=%d,b=%d",a,b);printf("max=%d,min=%d",*p1,*p2);}6.1指针变量请

7、注意,a和b并未交换,它们仍保持原值,但p1和p2的值改变了。p1的值原为&a,后来变成&b,p2原值为&b,后来变成&a。这样在输出*p1和*p2时,实际上是输出变量b和a的值,所以先输出9,然后输出5。图6.46.1指针变量指针变量作为函数参数函数的参数不仅可以是整型、实型、字符型等数据,还可以是指针类型。它的作用是将一个变量的地址传送到另一个函数中。例6.3对输入的两个整数按大小顺序输出。6.1指针变量Swap(int*p1,

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

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

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