工信版(中职)编程语言基础——C语言模块7教学课件
2022-10-26
|
70页
|
96人阅读
|
1人下载
普通
内容正文:
YCF
(中职)编程语言基础——C语言模块7教学课件
1
模块7指针
任务1 指针的概念
任务2 指向简单变量的指针
任务3 指针与数组
任务4 指向字符串的指针变量
任务5 指向函数的指针变量
任务6 指针变量作为函数参数
任务7 指向结构体变量的指针
任务1指针的概念
程序中的变量在运行时要占用内存单元,用来存放变量的内容。内存单元按顺序编号,称为内存地址,它相当于门牌号,系统根据内存地址存取数据。
在C语言中,指针是一种数据类型,指针变量是用来专门存放所指对象地址的变量,也就是说,数据值是存放在指针所指的对象中,而不是在指针变量中。例如,我们定义了一个变量px,把x的地址1000存放在变量px中,通过px可以间接地访问x变量。px就是指向x的指针变量,px和它所指对象x的关系如图7-1所示。
返回
任务2指向简单变量的指针
7.2.1 指针变量的定义
指针变量在C语言中是一个重要的概念,指针变量定义的一般形式为:
其含义是:指明标识符是存放某类型变量的地址变量,又称标识符为指向类型标识符的指定变量,简称标识符为指向类型标识符的指针。
例如int * px , x ;
表明px是指向某一整型变量的指针变量。
指针变量是一个变量,是存放地址的变量。设有一个指针变量px,若把变量x的地址赋给px,即:
返回
下一页
任务2指向简单变量的指针
则变量x的地址被放入指针变量px的存储空间中,其关系如图7-2所示。
当指针得到某一地址时,称该指针指向了那个地址的存储空间;指针指向的存储区域中的数据称为指针的目标。
在程序中用“*”表示指针的目标,即:* px表示的是px的目标x。
其实*px是一个运算表达式,也就是说:“*”是一个运算符,称为访问目标运算符,它只有一个运算量,而且必须是地址量。
在对指针的实际运用中,经常会用到以下操作。
对指针变量赋地址,即指针的初始化;
利用指针可以间接访问变量。
上一页
返回
下一页
任务2指向简单变量的指针
【例7-1】使用指针实现对变量的间接访问。
上一页
返回
下一页
任务2指向简单变量的指针
7.2.2 指针的用途和用法
由于指针是一种存放变量地址的特殊变量,因而为指针初始化的方法就是将1个变量的地址赋给1个指针变量。
(1)取地址运算符”&”。在C程序设计中,1个变量在内存中存放时具有确定的地址,但是对于程序设计者来说,具体地址是多少并不重要。使用取地址运算符”&”可以获得1个变量在内存中的地址。
上一页
返回
下一页
任务2指向简单变量的指针
(2)将变量地址赋给指针。程序中的语句组”p=&a;q=&b;”的功能是把整型变量a、b的地址赋给指针变量p、q,这就是对指针变量的赋值操作。
注意:对指针变量所赋的值一定是地址值。我们可以使用3种地址值:
变量的地址:其表示方法为&变量名,如程序中&a和&b
数组名:数组名表示数组的首地址。
已经定向的指针:其中保存了1个变量的地址。
上一页
返回
下一页
任务2指向简单变量的指针
(3)取内容运算符“*”。在指针的前面添加“*”运算符可以获得该指针所指向变量的值,因此将“*”运算符称为取内容运算符。
当将一个指针指向一个变量后,使用“*”可以实现对变量的间接访问。举例说明。
上一页
返回
下一页
任务2指向简单变量的指针
使用间接访问的方法不但可以将数据读出,还可以将数据写入。
注意:在指针定义语句中“*”只是一个指针标志符号,主要说明定义的变量为指针变量,不是取内容的运算符号,举例对比。
上一页
返回
下一页
任务2指向简单变量的指针
正因为如此,可以在指针定义的同时对其进行定向,例如:
(4)除了给指针赋1个确定的地址外还可以为指针赋1个空值,这时该指针并没有指向个确定的地址,例如:
上一页
返回
下一页
任务2指向简单变量的指针
(5)在C语言中,虽然在定义1个变量后系统就为该变量在内存中分配了一定大小的存储空间。但究竟此单元的地址是多少,用户是很难知道的。其实,在实际的操作中,通常并不需要知道1个变量在内存中的地址编号是多少,在程序中只需用相应的表达式表示出1个变量的地址即可,例如使用语句:
上一页
返回
任务3指针与数组
7.3.1 一维数组的指针和指向一维数组的指针变量
1. 数组的指针与数组元素的指针
数组元素的指针是指数组中某个具体元素的地址。数组的指针则是数组的首地址,也叫起始地址,是数组中最开头那个元素的地址。C语言程序中,数组名本身就代表该数组的首地址。
返回
下一页
任务3指针与数组
2. 指向数组元素的指针变量的定义与赋值
定义一个指向数组元素的指针变量的方法一般如下:
注意:
必须保证数组类型和指针变量所指向的变量类型保持一致。如果数组为int型,则指针变量应指向
由于学科网是一个信息分享及获取的平台,不确保部分用户上传资料的 来源及知识产权归属。如您发现相关资料侵犯您的合法权益,请联系学科网,我们核实后将及时进行处理。