第7章指针数据类型.ppt

  1. 1、本文档共73页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第七章 指针数据类型;学习目标;第七章 指针数据类型;变量的四大基本特征 名称:用于在程序中标识和访问(使用)变量,由用户自定义 类型:变量所属的数据类型 地址:数据对象的存储位置在计算机中的编号 值:在该位置处存储的内容 内存空间的访问方式 通过变量访问 通过地址访问;在C语言中,用指针类型来描述内存地址,通过指针运算来实现与内存地址有关的程序功能。 使用指针增加了程序设计的灵活性,提高了程序的效率。 ;指针变量的概念;指针的定义格式 格式:目标数据对象类型 * 指针变量名称; 其中,<目标数据对象类型 >为<指针变量>所能指向的数据的类型。 例一:定义 p 为指向整数的指针:int * p; 例二:定义 p 为指向结构体类型的指针:typedef struct{ int x, y; } POINT; POINT * p; 多个指针变量的定义 例三: int * p, * q; 例四:typedef int * PINT; PINT p, q;;取址操作符“&” 获取数据对象的地址,可将结果赋给指针变量 示例:int n = 10; 则 &n 表示变量n在内存中的起始地址。;仅定义指针变量,未初始化 例一:int * p; 定义指针变量,并使其指向某个目标变量 例二:int n = 10; int * p = &n;;定义指针变量,并使其指向数组首元素 例三:int a[8] = {1, 2, 3, 4, 5, 6, 7, 8}; int * q = a; 空指针:地址值为0,专用于表示未指向任何数据;地址值0可用NULL表示; 例四:int *p=NULL;;指针变量可以像普通变量一样赋值 示例:int n = 10; int * p = &n, * q; q = p; 两个指针指向同一个目标数据对象;赋值操作时应注意目标数据类型应符合指针类型定义 int x,*p,*p1; double y,*q; ...... p = &x; //OK,p指向x。 q = &y; //OK,q指向y。 p = &y; //Error,类型不一致。 q = &x; //Error,类型不一致。 p1 = p; //OK,p1指向p所指向的变量。 p1 = q; //Error,类型不一致。 p = 0; //OK,使得p不指向任何变量。 p = 120; //Error,120为int型。 p = (int *)120; //OK,不建议使用。 ;引领操作符“*” 获取指针所指向的目标数据对象,即间接访问 例一:int m, n = 10; int * p = &n; m = *p; 使得 m 为 10 例二(接上例):*p = 1; 使得 n 为 1;编写程序,使用指针互换两个整数的值;第七??语句执行前;第七条语句执行后;第八条语句执行后;第九条语句执行后;编写程序,使用指针互换两个整数的值;第七条语句执行后;第八条语句执行后;第九条语句执行后;作为函数通信的一种手段 使用指针作为函数参数,不仅可以提高参数传递效率,还可以将该参数作为函数输出集的一员,带回结果 作为构造复杂数据结构的手段 使用指针构造数据对象之间的关联,形成复杂数据结构 作为动态内存分配和管理的手段 在程序执行期间动态构造数据对象之间的关联;第七章 指针数据类型;数据交换函数 常量指针与指针常量 返回指针的函数;编写程序互换两个整型数据对象的值,要求使用函数实现数据对象值的互换;编写程序互换两个整型数据对象的值,要求使用函数实现数据对象值的互换;;;;;特别说明:不能返回函数内部定义的局部变量地址 例如: int *f() { int i=0; return &i; } int main() { int *p=f(); ...... printf(“%d”, *p); //输出什么? return 0; };第七章 指针数据类型;指针与数组 数组元素地址的计算 作为函数参数的指针与数组 指针与数组的可互换性;数组定义 int a[8] = {1, 2, 3, 4, 5, 6, 7, 8}; 数组基地址:&a或 a或&a[0] 数组元素地址 数组首元素地址:&a[0] 数组第 i 元素地址:&a[0] + i * sizeof( int ) 数组基地址与首元素地址数值相同,故 数组第 i 元素地址:a + i * sizeof( int );数组元素的地址 数组定义:int a[8] = {1, 2, 3, 4, 5, 6, 7, 8}; 指针定义:int * p; p = &a[0]; // p 指向数组首元素 指针定义:int * p; p = a; // p 仍指

文档评论(0)

xinfeiyang + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档