中国高校课件下载中心 》 教学资源 》 大学文库

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

文档信息
资源类别:文库
文档格式:PPT
文档页数:15
文件大小:108.5KB
团购合买:点击进入团购
内容简介
内蒙古科技大学:《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、指针与字符串 字符串是存储在字符数组中的。字符数组与指 针的关系与前面介绍的一维数组与指针的关系基本相 同,只是数组与指针均为字符型。当定义一个字符型 的指针变量并把它指向一字符数组时,就可以通过指 针变量来处理字符串了。例如:

共15页,试读已结束,阅读完整版请下载
刷新页面下载完整文档
VIP每日下载上限内不扣除下载券和下载次数;
按次数下载不扣除下载券;
注册用户24小时内重复下载只扣除一次;
顺序:VIP每日次数-->可用次数-->下载券;
相关文档