内蒙古科技大学:《C语言程序设计》课程教学课件(PPT讲稿)第七章 指针

C语言程序设计 第七章指针 计算机教研室 角 氯娣
计算机教研室 C语言程序设计 第七章 指针

一、指针的概念 C培言程序设计 、 指针的概念 三、指针变量的定义及引用 三、指针与数组 四、指针作为函数的参数 计算机教研室
计算机教研室 一、指针的概念 C语言程序设计 一、指针的概念 二、指针变量的定义及引用 三、指针与数组 四、指针作为函数的参数

一、指针的概念 C俯言程序设计 计算机为了管理内存,需要对存储单元进行 编号(以字节为单位),这个编号统称为“地 址”,又称为指针。每个变量都有一个地址。不 同数据类型的变量,古用的字节数不同,系统把 变量占据存储单元的第一个字节的地址作为该变 量的地址。若程序中分别定义了两个整型变量、, 个双精度实型变量x,且分别为其赋值为5、10 和3.5,经编译连接后系统为其分配的地址(假设) 为2004、2008和2012,其内容和地址关系如下 图所示。 计算机教研室
计算机教研室 C语言程序设计 计算机为了管理内存,需要对存储单元进行 编号(以字节为单位),这个编号统称为“地 址”,又称为指针。每个变量都有一个地址。不 同数据类型的变量,占用的字节数不同,系统把 变量占据存储单元的第一个字节的地址作为该变 量的地址。若程序中分别定义了两个整型变量i、j, 一个双精度实型变量x,且分别为其赋值为5、10 和3.5,经编译连接后系统为其分配的地址(假设) 为2004、2008和2012,其内容和地址关系如下 图所示。 一、指针的概念

指针的概念 C陪言程序设计 内存用户数据区 2000 2004 5 2008 10 2012 3.5 2020 图的左侧为假设地址。 存储单元的内容和地址是存储单元的两个相对 独立的属性。尽管二者之间存在着一些联系,但毕竟 是两个概念,不可混淆。 计算机教研室
计算机教研室 指针的概念 C语言程序设计 图的左侧为假设地址。 存储单元的内容和地址是存储单元的两个相对 独立的属性。尽管二者之间存在着一些联系,但毕竟 是两个概念,不可混淆。 内存用户数据区 2000 2004 2008 2012 2020 i j x 10 3.5 5

二、指针变量的定义及引用 C俯言程序设计 在C语言中还可以定义一种专门用来存放存储 单元地址的变量,称为指针变量。指针变量的定义的 格式为 基类型*指针变量名 基类型是用来说明定义的指针要指向的变量类 型。“*”号,说明所定义的变量是指针变量。指针 变 量赋值前,所指向的存储单元是不定的,当赋值后指 针变量才具体指向某一变量。例如在程序中有如下定 义 int a,b,c,*p; 绿锐我空
计算机教研室 二、指针变量的定义及引用 C语言程序设计 在C语言中还可以定义一种专门用来存放存储 单元地址的变量,称为指针变量。指针变量的定义的 格式为: 基类型 *指针变量名 基类型是用来说明定义的指针要指向的变量类 型。 “*”号,说明所定义的变量是指针变量。指针 变 量赋值前,所指向的存储单元是不定的,当赋值后指 针变量才具体指向某一变量。例如在程序中有如下定 义: int a,b,c, *p; p=&a;

指针变量的定义及引用 C培言程序设计 则指针变量p中保存的是变量a的地址。 1、指针的赋值 2、指针的间接访问 3、指针的运算 用两个指针分别指向两个变量,要求按自大小 的顺序输出。如图: 计算机教研室
计算机教研室 指针变量的定义及引用 C语言程序设计 则指针变量p中保存的是变量a的地址 。 1、指针的赋值 2、指针的间接访问 3、指针的运算 用两个指针分别指向两个变量,要求按自大小 的顺序输出。如图: p1 p2 a b &b &a 30 20 p1 p2 a b &a &b 30 20

C俯言程序设计 main() { int *p1,*p2,*p,a,b; scanf("%d%d",&a,&b); p1=&ap2=&b; if(a>b) p=plip1=p2;p2=p; printf("\n a=%d,b=%d",a,b); printf("\n min=%d,max=%d",*p1,*p2); }改写程序,交换存储单元的内容。 计算机教研室
计算机教研室 C语言程序设计 main() { 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("\n a=%d,b=%d",a,b); printf("\n min=%d,max=%d",*p1, *p2); }改写程序,交换存储单元的内容

三、指针与数组 C培言程序设计 由于数组古据一块连续的存储单元,且数组中 的各元素的相对位置总是固定的,所以对数组元素的 引用也可以使用指针运算来实现。 1、指针与一维数组: 当指针变量p指向数组中的某一元素时,p十1则 指向下一个元素,p+n指向后面第n个元素;同样, p一1指向前二个元素,而p一n则指向前面第n个元 素。若指针变量p指向的是数组第一个元素,则p十1 和p+分别代表下标为1和下标为的元素的地址,相 应下标元素的值分别为*(p+1)和*(p+)。由于一维 数组名也是地址,而且是数组的首地址,所以ā[] 也可用*(a+)来表示,而a+i则为a]的地址。 计算机教研室
计算机教研室 三、指针与数组 C语言程序设计 由于数组占据一块连续的存储单元,且数组中 的各元素的相对位置总是固定的,所以对数组元素的 引用也可以使用指针运算来实现。 1、指针与一维数组: 当指针变量p指向数组中的某一元素时,p+1则 指向下一个元素,p+n指向后面第n个元素;同样, p-1指向前一个元素,而p-n则指向前面第n个元 素。若指针变量p指向的是数组第一个元素,则p+1 和p+i分别代表下标为1和下标为i的元素的地址,相 应下标元素的值分别为*(p+1)和*(p+i)。由于一维 数组名也是地址,而且是数组的首地址,所以a[i] 也可用*(a+i)来表示,而a+i则为a[i]的地址

C俯言程序设计 因此当p指向数组a的首地址时,表示数组元素a[i门有 四种形式: a[的*(a+i) *(p+i) p[] 例用数组名法从键盘接收并输出数组元素。 main() int a[10],i; for(i=0;i≤10;i++) scanf("%d",a+i); for(i=0,i<10;i++) printf("%4d",(a+i)); 计算机教研室
计算机教研室 C语言程序设计 因此当p指向数组a的首地址时,表示数组元素a[i]有 四种形式: a[i] * (a+i) *(p+i) p[i] 例 用数组名法从键盘接收并输出数组元素。 main() { int a[10],i; for(i=0;i<10;i++) scanf("%d",a+i); for(i=0;i<10;i++;) printf("%4d", * (a+i)); }

C培言程序设计 用指针变量法改写程序。 for(p=a;p<a+10;p++) scanf(%d',p月 for(p=ap<a+10;) /*重新为指针赋值*/ printf("%4d",*p++); 2、指针与字符串 字符串是存储在字符数组中的。字符数组与指 针的关系与前面介绍的一维数组与指针的关系基本相 同,只是数组与指针均为字符型。当定义一个字符型 的指针变量并把它指向一字符数组时,就可以通过指 针变量来处理字符串了。例如: 计算机教研室
计算机教研室 C语言程序设计 用指针变量法改写程序。 for(p=a;p<a+10;p++) scanf(“%d”,p); for(p=a;p<a+10;) /*重新为指针赋值*/ printf("%4d", *p++); 2、指针与字符串 字符串是存储在字符数组中的。字符数组与指 针的关系与前面介绍的一维数组与指针的关系基本相 同,只是数组与指针均为字符型。当定义一个字符型 的指针变量并把它指向一字符数组时,就可以通过指 针变量来处理字符串了。例如:
按次数下载不扣除下载券;
注册用户24小时内重复下载只扣除一次;
顺序:VIP每日次数-->可用次数-->下载券;
- 内蒙古科技大学:《C语言程序设计》课程教学课件(PPT讲稿)第八章 结构体与共用体.ppt
- 内蒙古科技大学:《C语言程序设计》课程教学资源(作业习题)选择题.doc
- 内蒙古科技大学:《C语言程序设计》课程教学资源(作业习题)改错题.doc
- 内蒙古科技大学:《C语言程序设计》课程教学资源(作业习题)填空题.doc
- 内蒙古科技大学:《C语言程序设计》课程教学资源(作业习题)编程题.doc
- 内蒙古科技大学:《C语言程序设计》课程授课教案(讲义)第二章 数据类型、运算符及表达式(一).doc
- 内蒙古科技大学:《C语言程序设计》课程授课教案(讲义)第二章 数据类型、运算符及表达式(二).doc
- 内蒙古科技大学:《C语言程序设计》课程授课教案(讲义)第一章 C简介.doc
- 内蒙古科技大学:《C语言程序设计》课程授课教案(讲义)第三章 简单的C程序设计.doc
- 内蒙古科技大学:《C语言程序设计》课程授课教案(讲义)第四章 程序的控制结构(四).doc
- 内蒙古科技大学:《C语言程序设计》课程授课教案(讲义)第四章 程序的控制结构(三).doc
- 内蒙古科技大学:《C语言程序设计》课程授课教案(讲义)第四章 程序的控制结构(二).doc
- 内蒙古科技大学:《C语言程序设计》课程授课教案(讲义)第四章 程序的控制结构(一).doc
- 内蒙古科技大学:《C语言程序设计》课程授课教案(讲义)第六章 数组 6.3.doc
- 内蒙古科技大学:《C语言程序设计》课程授课教案(讲义)第六章 数组 6.3.doc
- 内蒙古科技大学:《C语言程序设计》课程授课教案(讲义)第六章 数组 6.2.doc
- 内蒙古科技大学:《C语言程序设计》课程授课教案(讲义)第五章 函数.doc
- 内蒙古科技大学:《C语言程序设计》课程授课教案(讲义)第七章 指针(一).doc
- 内蒙古科技大学:《C语言程序设计》课程授课教案(讲义)第六章 数组.doc
- 内蒙古科技大学:《C语言程序设计》课程授课教案(讲义)第七章 指针(二).doc
- 内蒙古科技大学:《C语言程序设计》课程教学课件(PPT讲稿)第九章 文件操作.ppt
- 内蒙古科技大学:《C语言程序设计》课程教学课件(PPT讲稿)第六章 数组.ppt
- 内蒙古科技大学:《C语言程序设计》课程教学课件(PPT讲稿)第二章 数据类型、运算符及表达式.ppt
- 内蒙古科技大学:《C语言程序设计》课程教学课件(PPT讲稿)第三章 简单的C程序设计.ppt
- 内蒙古科技大学:《C语言程序设计》课程教学课件(PPT讲稿)第五章 函数.ppt
- 内蒙古科技大学:《C语言程序设计》课程教学课件(PPT讲稿)第四章 程序的控制结构.ppt
- 内蒙古科技大学:《C语言程序设计》课程教学课件(PPT讲稿)第一章 C语言概述.ppt
- 《过程流体机械》课程教学课件(PPT讲稿)第一章 绪论.ppt
- 《过程流体机械》课程教学课件(PPT讲稿)第四章 泵.ppt
- 《过程流体机械》课程教学课件(PPT讲稿)第二章 往复式压缩机.ppt
- 《过程流体机械》课程教学课件(PPT讲稿)第三章 离心式压缩机.ppt
- 《过程流体机械》课程教学课件(PPT讲稿)第五章 离心机.ppt