1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第章指针

目标 理解指针的意义 掌握指针变量和指针运算符的使用 掌握指针与函数的关系 第8章 指针 8.1 变量的地址和指针 8.2 指针变量的定义和指针变量的基类型 8.3 给指针变量赋值 8.4 对指针变量的操作 8.5 函数之间地址值的传递 第8章 指针 C程序设计中使用指针可以: 使程序简洁、紧凑、高效 有效地表示复杂的数据结构 动态分配内存 得到多于一个的函数返回值 C数据类型 8.1 变量的地址和指针P92 1.数据在内存中的存储方式: 按数据类型在内存为其分配一定数量的存储单元(字节)。 8.1 变量的地址和指针P92 4.直接访问与间接访问 直接访问:按变量地址存取变量值 间接访问:通过存放变量地址的变量去访问变量 第8章 指针 8.1 变量的地址和指针 8.2 指针变量的定义和指针变量的基类型 8.3 给指针变量赋值 8.4 对指针变量的操作 8.5 函数之间地址值的传递 第8章 指针 8.1 变量的地址和指针 8.2 指针变量的定义和指针变量的基类型 8.3 给指针变量赋值 8.4 对指针变量的操作 8.5 函数之间地址值的传递 注意:指针变量中只能存放地址,不能将一个非地址类型的数据(如常数等)赋给一个指针变量,如: 第8章 指针 8.1 变量的地址和指针 8.2 指针变量的定义和指针变量的基类型 8.3 给指针变量赋值 8.4 对指针变量的操作 8.5 函数之间地址值的传递 所以: 1. *i 等价于*ptr等价于变量i. 2.当一个指针变量 p指向某变量 i时,则表达式*p与变量 i等价。例如: 指针变量的值是可以改变的;通过* p方式存取它所指向变量的值是以间接存取的形式进行的. 说明: 1、在定义指针变量时,还未规定它指向哪一个变量,此时不能用*运算符访问指针。只有在程序中用赋值语句具体规定后,才能用*运算符访问所指向的变量。 2、区分:*运算符在不同场合的作用,编译器能够根据上下文环境判别*的作用。 int a,b,c; int * p; (*表示定义指针) p = a; *p = 100; (*表示指针运算符) c = a * b; (*表示乘法运算符) [例] 输入a和b两个整数,按先大后小的顺序输出a和b。 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(a=%d,b=%d\n,a,b); printf(max=%d,min=%d\n, *p1, *p2); } 程序说明: [例8.1] 通过指针运算选出值小的那个数。 main( ) { int a, b ,min,*pa, *pb, *pmin,; pa = a; pb = b; pmin=min; scanf(%d%d, pa, pb); printf(a=%d,b=%d\n,a,b); *pmin=*pa; if (*pa *pb) *pmin=*pb; printf(min=%d\n, min); } ? 例: short int var, *ptr_var; ptr_var = var; ptr_var ++; 假定var存储在地址1000中,因为短整数的长度是 2 个字节,ptr_var的值将是 8.4.3指针比较 前提:两个指针都指向相同类型的变量 假设ptr_a和ptr_b分别指向a和b 第8章 指针 8.1 变量的地址和指针 8.2 指针变量的定义和指针变量的基类型 8.3 给指针变量赋值 8.4 对指针变量的操作 8.5 函数之间地址值的传递 8.5.1 形参为指针变量时实参和形参之间 的数据传递 8.5.2 通过传送地址值在被调用函数中直 接改变调用函数中的变量的值 8.5.3 函数返回地址值 8.5.2 通过传送地址值在被调用函数中直接改变调用函数中的变量的值 例:8.3 #inclue stdio.h void swap( int *,int *); main( ) { int x=30,y=20; printf(“(1)x=%d y=%d\n”,x,y); swap( x , y); printf(“(4)x=%d y=%d\n”,x,y); } 续 void swap (int *a,int *b) { int t; printf(“(2)a=%d b=%d\n”,*a,*

文档评论(0)

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

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

1亿VIP精品文档

相关文档