宁波大学:《C语言程序设计》第八章 指针(石守东)

TC IDE 第八章指针 本章重点:1、指针的概念; 2、变量的、函数的指针; 跳转到第一页
跳转到第一页 第八章 指 针 TC IDE 本章重点:1、指针的概念; 2、变量的、函数的指针;

TC IDE 第八章指针 第一节变量的地址和指针 内存用户数据区 地址与取地址运算 (1)C程序中每一个变量都要在内存中占有 个可标识的存储区。 2000 (2)存储区的地址是指该存储区域中第一个字 2002 节的地址。 2004 (3)C语言除允许在程序中用名字引用一个变 量之外,还允许在程序中使用该变量的地 址 3010 2000 例: int 1,,k; scanf(%d”,&i); 跳转到第一页
跳转到第一页 第八章 指 针 TC IDE 第一节 变量的地址和指针 1、地址与取地址运算: (1) C程序中每一个变量都要在内存中占有一 个可标识的存储区。 (2)存储区的地址是指该存储区域中第一个字 节的地址。 (3) C语言除允许在程序中用名字引用一个变 量之外,还允许在程序中使用该变量的地 址。 例: int i,j,k; scanf(“%d”,&i); 2000 2002 2004 3010 i j k i_p 3 6 9 2000 : : : 内存用户数据区 : :

TC IDE 第一节变量的地址和指针 2、指针与指针变量 ※直接访问:直接按变量的地址存取变量值 指通过变量名或地址访问程序中一个变量的存储空间。 例:i=3,j=6,k=9;/通过变量i、j、k来访问存储单元。 ※间接访问: 指通过存放地址的单元找到变量的存储空间。 例:变量i,不知道其值及地址,而只知道它的地址放在 3010、3011,因此可通过存放地址的单元找到变量i 的值。 注意:对于间接访问,在c语言中,可定义一种变量专门用 米创 存放其它变量的地址。 1 pointer; i pointer=&i; 跳转到第一页
跳转到第一页 TC IDE 第一节 变量的地址和指针 2、指针与指针变量: 简言之,指针就是地址。 (1)内存的访问方式 ※ 直接访问:直接按变量的地址存取变量值 指通过变量名或地址访问程序中一个变量的存储空间。 例: i=3, j=6, k=9; /* 通过变量i、j、k 来访问存储单元。*/ ※ 间接访问: 指通过存放地址的单元找到变量的存储空间。 例: 变量 i,不知道其值及地址,而只知道它的地址放在 3010、3011中,因此可通过存放地址的单元找到变量i 的值。 注意: 对于间接访问,在c语言中,可定义一种变量专门用 来 存放其它变量的地址。 例: i_pointer; i_pointer=&i;

TC IDE 第一节变量的地址和指针 (2)指针与指针变量的概念: ※一个变量的地址称为该变量的“指针”。 ※存放地址的变量叫“指针变量”。 指针变量存放地址。 (3)变量的指针与指向变量的指针变量区别: ※变量的指针:即该变量地址。 ※指向变量的指针变量:存放着变量地址的变量。 跳转到第一页
跳转到第一页 TC IDE 第一节 变量的地址和指针 (2)指针与指针变量的概念: ※ 一个变量的地址称为该变量的“指针”。 ※ 存放地址的变量叫“指针变量”。 指针变量存放地址。 (3)变量的指针与指向变量的指针变量区别: ※ 变量的指针:即该变量地址。 ※ 指向变量的指针变量:存放着变量地址的变量

TC IDE 第二节指针变量的定义和基类型 指针的类型: 是指它所指向的变量的类型。 例:指向整型变量的指针,其类型便为int 2、指针变量的定义 语法格式:类型标识符变量名; 例:int*p1 charpy float "p3; 注意:(1)*是说明符,意为该变量是指针型变量。 (2)指针变量是具有确定的指向的数据类型 (3)指针变量必须区分基类型 跳转到第一页
跳转到第一页 TC IDE 第二节 指针变量的定义和基类型 1、指针的类型: 是指它所指向的变量的类型。 例: 指向整型变量的指针,其类型便为int。 2、指针变量的定义: 语法格式: 类型标识符 *变量名; 例: int *p1; char *p2; float *p3; 注意: (1) * 是说明符,意为该变量是指针型变量。 (2) 指针变量是具有确定的指向的数据类型。 (3) 指针变量必须区分基类型

TC IDE 第三节给指针变量赋值 给指针变量赋地址值: PI (1)通过求地址运算&获得地址值200 3 例 Int x p1, p2, i 1=&i /一般不直接赋数值。*/200 p1的意义为p1所指向的变量i, p1与代表同一存储空间,i=3;则p1也为3 (2)通过指针变量获得地址值 2=p1 2、给指针变量赋“空”值 pl=NULL 说明: (1)NULL是 stdio.h中的预定义符,用到NULL需加命 令:# include“ stdio. h” (2)NULL的值为0,即“空”。 (3)p1=NULL;等价于pl=“(0’;或p1=0; 跳转到第一页
跳转到第一页 TC IDE 第三节 给指针变量赋值 1、给指针变量赋地址值: (1)通过求地址运算&获得地址值 例:int *p1, *p2,i; p1=&i; /* 一般不直接赋数值。*/ *p1的意义为p1所指向的变量i, *p1与i代表同一存储空间,i=3;则*p1也为3。 (2)通过指针变量获得地址值 p2=p1; 2、给指针变量赋“空”值 p1=NULL; 说明: (1)NULL是stdio.h中的预定义符,用到NULL需 加命 令:#include “stdio.h” (2)NULL的值为0,即“空”。 (3)p1=NULL ; 等价于 p1=‘\0’; 或 p1=0; 2000 3 P1 *p1 i 2000

TC IDE 第四节对指针变量的操作 1、通过指针来引用一个存储单元 例:inti=3,j,*p;/此行的“*”与下面的不同* & i=*p+2 “p=&i”的作用是使指针变量p指向变量i 注意:(1)p是地址变量,而p是非地址变量。 (2)“*”:为指针运算符(指向运算符、间接运算符) 为单目运算符。 (p表示p所指向的变量) (3)“&”:为取地址运算符,为单目运算符。 (&x表示x变量的地址) 跳转到第一页
跳转到第一页 TC IDE 第四节 对指针变量的操作 1、通过指针来引用一个存储单元 例 : int i =3, j , *p; /*此行的“*”与下面的不同*/ p=&i; j=*p+2; “p=&i”的作用是使指针变量p指向变量i 。 注意:(1)p是地址变量,而*p 是非地址变量。 (2)“*”:为指针运算符(指向运算符、间接运算符) 为单目运算符。 (*p表示p所指向的变量) (3)“&”:为取地址运算符,为单目运算符。 (&x表示x变量的地址)

TC IDE 第四节对指针变量的操作 例:inti,j,*p /此行的“*”与下面的不同 p=&i; 3 p+2; “p=&i”的作用是使指针变量p指向变量i。 定义后 p&i后 p=3后 j*p+2后 1000 1000 1000 1000 1002 1002 1002 1002 1004 10041000 10041000 p1004 1000 跳转到第一页
跳转到第一页 TC IDE 第四节 对指针变量的操作 例 : int i , j , *p; /*此行的“*”与下面的不同*/ p=&i; *p=3; j=*p+2; “p=&i”的作用是使指针变量p指向变量i 。 定义后 p=&i后 *p=3后 i j p : : : : 1000 1002 1004 i j p 1000 1002 1004 i j p 1000 1002 1004 i j p 1000 3 1000 1000 1002 1004 j=*p+2后 3 5 1000

TC IDE 第四节对指针变量的操作 关于运算符&和*的几点说明: (1)结合性:自右向左 &*p1相当于&(p1)==&(a)==&a=p1 &a 相当于*(&a)=a (2)优先级:高于算术运算符,低于正负号运算符 2、移动指针(指针与整数相加、减): ※表示指针在内存空间的上下移动。 ※移动是以其类型长度为单位的。 请看p9页例子。 3、指针比较: B: if(p<g)printf("p points to lower memory than q n") f(p==403) printf((“ p points to Nul.n”); 跳转到第一页
跳转到第一页 TC IDE 第四节 对指针变量的操作 关于运算符&和 * 的几点说明: (1)结合性:自右向左 &*p1 相当于 &(*p1) ==&(a)==&a==p1 *&a 相当于 *(&a)==a (2)优先级:高于算术运算符,低于正负号运算符。 2、移动指针(指针与整数相加、减): ※ 表示指针在内存空间的上下移动。 ※ 移动是以其类型长度为单位的。 请看p99页例子。 3、指针比较: 例:if(p<q)printf(“p points to lower memory than q.\n”); if(p==‘\0’)printf(“p points to Null.\n”);

TC IDE 第五节函数之间地址值的传递 、指针作为函数参数: 1、用指针(地址)作函数参数,可以实现“通过被调 用 的函数改变主调函数中变量的值”的目的。 2、使用指针作为函数参数可以在调用一个函数时得到 多个由被调函数改变了的值。 例:p101的8.3两个变量交换 跳转到第一页
跳转到第一页 第五节 函数之间地址值的传递 一、指针作为函数参数: 1、用指针(地址)作函数参数,可以实现“通过被调 用 的函数改变主调函数中变量的值”的目的。 2、使用指针作为函数参数可以在调用一个函数时得到 多个由被调函数改变了的值。 例:p101的8.3 两个变量交换 TC IDE
按次数下载不扣除下载券;
注册用户24小时内重复下载只扣除一次;
顺序:VIP每日次数-->可用次数-->下载券;
- 宁波大学:《C语言程序设计》第七章 函数(石守东).ppt
- 宁波大学:《C语言程序设计》第六章 字符型数据(石守东).ppt
- 宁波大学:《C语言程序设计》第五章 循环结构(石守东).ppt
- 宁波大学:《C语言程序设计》第四章 选择结构(石守东).ppt
- 宁波大学:《C语言程序设计》第三章 顺序结构(石守东).ppt
- 宁波大学:《C语言程序设计》第二章 C程序设计的初步知识(石守东).ppt
- 宁波大学:《C语言程序设计》第一章 程序设计基本概念(石守东).ppt
- 宁波大学:《C语言程序设计》第十六章 文件(石守东).ppt
- 宁波大学:《C语言程序设计》第十五章 位运算(石守东).ppt
- 宁波大学:《C语言程序设计》第十四章 结构体、共用体和用户定义类型(石守东).ppt
- 宁波大学:《C语言程序设计》第十三章 编译预处理和动态存储分配(石守东).ppt
- 宁波大学:《C语言程序设计》第十二章 C语言中用户标识符的作用域和存储类(石守东).ppt
- 宁波大学:《C语言程序设计》第十一章 对函数的进一步讨论(石守东).ppt
- 宁波大学:《C语言程序设计》第10章 字符串(石守东).ppt
- 高职高专系列规划教材:《电子测量技术》课程教学资源(PPT课件)第8章 频域测量技术.ppt
- 高职高专系列规划教材:《电子测量技术》课程教学资源(PPT课件)第7章 波形显示与测量.ppt
- 高职高专系列规划教材:《电子测量技术》课程教学资源(PPT课件)第6章 频率与时间测量.ppt
- 高职高专系列规划教材:《电子测量技术》课程教学资源(PPT课件)第5章 测量用信号发生器.ppt
- 高职高专系列规划教材:《电子测量技术》课程教学资源(PPT课件)第4章 电子元器件与集成电路测量.ppt
- 高职高专系列规划教材:《电子测量技术》课程教学资源(PPT课件)第3章 电流、电压与功率测量.ppt
- 宁波大学:《C语言程序设计》第九章 数组(石守东).ppt
- 机械工业出版社:《实用电子电气工程图算手册》PDF电子书(共十二章)(刘启光).pdf
- 《电子电路相关实验》实验五 集电极调幅与大信号检波.ppt
- 《电子电路相关实验》实验一 高频小信号调谐放大器.ppt
- 《电子电路相关实验》实验八 模拟锁相环.ppt
- 《电子电路相关实验》实验二 二极管开关混频器实验.ppt
- 《电子电路相关实验》实验六 变容二极管调频.ppt
- 《电子电路相关实验》实验七 集成电路模拟乘法器的应用.ppt
- 《电子电路相关实验》实验三 高频谐振功率放大器.ppt
- 《电子电路相关实验》实验四 正弦振荡实验.ppt
- 北京广播学院:《线性电子电路》课程教学资源(PPT课件)第九章 EDA综述.ppt
- 北京广播学院:《线性电子电路》课程教学资源(PPT课件)第六章 数字调制与解调.ppt
- 北京广播学院:《线性电子电路》课程教学资源(PPT课件)第八章 稳压电路.ppt
- 北京广播学院:《线性电子电路》课程教学资源(PPT课件)第七章 锁相环路与频率合成.ppt
- 北京广播学院:《线性电子电路》课程教学资源(PPT课件)绪论.ppt
- 北京广播学院:《线性电子电路》课程教学资源(PPT课件)第二章 正弦波振荡器.ppt
- 北京广播学院:《线性电子电路》课程教学资源(PPT课件)第四章 振幅调制与解调.ppt
- 北京广播学院:《线性电子电路》课程教学资源(PPT课件)第三章 模拟相乘器和混频器.ppt
- 北京广播学院:《线性电子电路》课程教学资源(PPT课件)第一章 功率放大器.ppt
- 北京广播学院:《线性电子电路》课程教学资源(PPT课件)第五章 角度调制与解调电路.ppt