内容正文:
编程语言基础-C语言
8.1 指针的概念
第8章 指针
高等教育出版社
教学目标
一
了解指针、指针变量的概念。
1
2
了解“直接访问方式”。
3
了解“间接访问方式”。
教学重难点
二
掌握指针、指针变量的概念。
1
2
掌握运算符的使用。
3
掌握直接访问方式和间接访问方式的不同。
导入新课
三
“该程序执行了非法操作,即将关闭”
这种错误绝大部分都是指针和数组造成的。黑客攻击服务器利用的 bug绝大部分都是指针和数组造成的。
计算机网络是指将地理位置不同的具有独立功能的多台计算机及其外部设备,通过通信线路连接起来,在网络操作系统,网络管理软件及网络通信协议的管理和协调下,实现资源共享和信息传递的计算机系统。
新知讲授
四
(一)指针和指针变量的概念
指针就是内存地址。内存中的每个存储单元都有编号,称为地址。
通过首地址和数据类型可以访问内存中某一数据。数据类型决定所占用存储单元数。因此,指针和类型有关。
指针变量是用来存放这些内存地址的变量。
不同类型指针变量所占用的存储单元长度是相同的。而存放数据的变量因数据的类型不同,所占用的存储空间长度也不同。
C语言是第三代语言即为面向过程的高级语言。
指针的概念
8.1
直接访问方式:根据变量名实现对存储空间的访问。
间接访问方式:通过存放地址的指针变量实现对存储空间的访问。
内存的访问方式
C语言是第三代语言即为面向过程的高级语言。
指针的概念
8.1
直接访问方式:
每当定义一个变量时,编译器就根据该变量的数据类型分配相应长度的存储空间,这个存储空间的首地址就是变量的地址,也就是指针。
由于系统对变量及地址建立了逻辑关系,因此尽管系统是根据地址对存储空间进行存取操作的,但用户只需根据变量名就可以实现对存储空间的访问,这种方式称为“直接访问方式”。
C语言是第三代语言即为面向过程的高级语言。
指针的概念
8.1
直接访问方式:
float x;
x=123.45;
x表示内存变量,2060则是这个变量的地址。
C语言是第三代语言即为面向过程的高级语言。
指针的概念
8.1
间接访问方式:
如果将变量x的地址2060存放到另一个变量p中,即p的值为2060。这样通过变量p可以找到变量x的地址,从而找到x的值,就是“间接访问方式”。
存放地址的变量p就是指针变量。
p指向x
C语言是第三代语言即为面向过程的高级语言。
指针的概念
8.1
“*”是指针运算符,或称为“间接访问”运算符。
*p 表示指针变量p所指向的变量。
若要改变x变量的值,也可通过改变*p的值来实现。如执行“*p=47;”,则此时x=47。
“&”也是一个指针运算符,称为取地址运算符。
如为了让指针p指向变量x,可执行"p= &x”,此时变量x的地址存入了指针p中。
C语言是第三代语言即为面向过程的高级语言。
指针的概念
8.1
注意:指针变量只能存放地址值,不要将一个整型数据赋给一个指针变量。
p=2060;
赋值是非法的,会出现警告:
[Warning] assignment makes pointer from integer without a cast [enabled by default]
([警告]在未转换类型前用整数对指针变量赋值)。
p=(float*)2060;
C语言是第三代语言即为面向过程的高级语言。
指针的概念
8.1
注意:也不能将指针指向常量。
p=&55;
出现错误信息:
[Error] lvalue required as unary'&' operand
([错误]用一元运算符'&'处理常量值)。
课堂练习
五
1.指针也就是( )。
A.内存地址 B.内存
C.指针变量
A
课堂练习
五
2.内存中的每个存储单元都有编号,称为( )。
A.地址 B.编码
C.变量
A
课堂练习
五
3.每当定义一个变量时,编译器就根据该变量的( )分配相应长度的存储空间。
A.地址 B.数据类型
B
课堂练习
五
4.只需根据变量名就可以实现对存储空间的访问,这种方式称为( )。
A.直接访问方式