C语言开发基础教程(Dev-C++) 第6章 指针

  • 格式:pptx
  • 大小:5.11 MB
  • 文档页数:20

下载文档原格式

  / 20
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

3、同类指针相减运算 同类指针类型可以进行相减操作。 pm-pn pm和pn是两个指向同一类型的指针变量。同类指针进行相减运算其结果 为两个指针之间数据元素的个数,即指针的步长个数。

6.2.3 常用指针运算
注意
同类指针之间只有相减运算,没有 相加运算,两个地址相加是没有意 义的,此外,不同类型指针之间不 能进行相减运算。

6.2.2 取值运算符
指针变量存储的数值是一个地址,直接 对地址操作容易出错,针对指针变量的 取值并非取出它所存储的地址,而是间 接取得该地址中存储的值。C语言支持 以取值运算符“*”取得指针变量所指 内存中存储的值。

6.2.2 取值运算符
*符号使用方法:*指针表达式 int a = 10; //定义变量a int *p = &a; //定义int类型的指针p,并取变量a的地址赋值给p int b = *p; //定义int型变量b,并取指针变量p中存储的变量值赋给b

6.1 指针的概念
1、指针的概念 因为通过变量的地址可以找到变量所 在的存储空间,所以说变量的地址指 向变量所在的存储空间,地址是指向 该变量的指针。

6.1 指针的概念
1、指针的概念 存储变量a的内存地址为0x0037FBCC, 如果用一个变量保存该地址,如变量p, 那么p就称为指向变量a的指针。

ຫໍສະໝຸດ Baidu
6.1 指针的概念
2、指针变量的定义 定义指针变量的语法如下:
变量类型 *变量名;
变量类型指定定义的指针指向的数据的类型,变量名前的符号“*”表示该 变量是一个指针类型的变量。 int *p; //定义一个int类型的指针变量

多学一招:内存四区
1、栈区 栈区是一块连续的内存区域,该区域由编译器自动分配和释放,一 般用来存放局部变量。栈区空间小,特点是先进后出。 2、堆区 堆区是不连续的内存区域,各块区域由链表将它们串联起来。该区 域一般由程序员分配或释放,若程序员不释放,程序结束时可能由 操作系统回收(程序不正常结束则回收不了)。 堆区空间大,

多学一招:内存四区
3、数据区 数据区根据功能又可以分为静态全局区和常量区两个域。全局区 (静态区)(static):用于存储全局变量和静态变量的区域,初 始化的全局变量和静态变量在一块区域,未初始化的全局变量在静 态变量的相邻区域。全局区在程序结束后由操作系统释放。常量区: 用于存储字符串常量和其他常量的区域,该区域在程序结束后由操 作系统释放。

6.2.3 常用指针运算
1、指针变量与整数相加减 如果p为int*类型的指针变量,则p与p+1的位置如下图。
p步长为4字节

6.2.3 常用指针运算

6.2.3 常用指针运算
注意
对于单独零散的变量,指针的加减运算 并无意义,只有指向连续的同类型数据 区域,指针加、减整数才有实际意义, 因此指针的加减运算通常出现在数组操 作中。

6.2.1 取址运算符
小提示:指针变量的赋值 在为指针变量赋值时,变量数据类型与指针的基类型最好相同,例如, 将int型变量的地址赋值给int*型指针。如果将int型变量的地址赋值 给float*型指针,程序虽然不会报错,但由于不同类型指针对应的内 存单元数量不同,在解读指针指向的变量时会产生错误。

6.2.1 取址运算符
在程序中定义变量时系统会为变量在 内存中开辟一段空间,用于存储该变 量的值,每个变量的存储空间都有唯 一的编号,这个编号就是变量的内存 地址。C语言支持以取址运算符“&” 获得变量的地址。

6.2.1 取址运算符
&符号的使用方法:&变量; int a = 10; //定义变量a int *p = &a; //定义int类型的指针p,并取变量a的地址赋值给p

6.2.3 常用指针运算
2、指针表达式的自增自减运算 指针类型变量也可以进行自增或自减运算: p++ , p-- , ++p, --p 指针的自增自减运算与指针的加减运算含意是相同的,每自增(减)一次 都是向后(前)移动一个步长,即p++、++p最终的结果与p+1是相同 的。

6.2.3 常用指针运算

6.1 指针的概念
1、指针的概念

定义一个int类型变量a:
0x0037FBCC
int a=10;
10
a
a在内存中的存储如右图。 0x0037FBD0


6.1 指针的概念
1、指针的概念 编译器会根据变量a的类型int,为其分配4个字节地址连续的存储空间。 假如这块连续空间的首地址为0x0037FBCC,那么这个变量占据 0x0037FBCC~0x0037FBCF这四个字节的空间,0x0037FBCC就是变量a 的地址。

6.2.3 常用指针运算
1、指针变量与整数相加减 指针变量可以与整数进行相加或相减操作: p+n, p-n p是一个指针变量,p+1表示将指针向后移动1个数据长度。数据长度是 指针对应的基类型所占的字节数,也称为步长,若指针是int*类型的指针, 则p的步长为4字节,执行p+1,则p的值加上4个字节,即p向后移动4个 字节。

多学一招:内存四区
4、代码区 代码区用于存放函数体的二进制代码。程序中每定义一个函数,代 码区都会添加该函数的二进制代码,用于描述如何运行函数。当程 序调用函数时,就会在代码区寻找该函数的二进制代码并运行。

6.2 指针运算
指针运算
指针的运算都是针对内存中的地 址来实现的,主要包括取址运算、 取值运算、加减运算、自增自减 运算、同类指针相减运算。

第6章 指针
· 指针概念 · 指针运算 · 指针与数组
·指针与函数 · 指针数组 · 二级指针

6.1 指针的概念
程序运行过程中产生的数据都保存在内 存中,内存是以字节为单位的连续存储 空间,每个字节都有一个编号,这个编 号称为内存地址。程序中的变量在生存 期内都占据一定字节的内存,这些字节 在内存中是连续的,第一个字节的地址 就称为该变量的地址。

多学一招:空指针、无类型指针、野指针
空指针:没有指向任一存储单元的指针。
有时可能需要用到指针,但是不确定指针在何时何处使用,因此先使定 义好的指针指向空。
int *p1=0;

相关主题