C语言入门到精通7要点.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第8章 指 针 8.1 指针的基本概念 8.2 指针与一维数组 8.3 指针与二维数组 8.4 指针与字符串 8.5 指 针 数 组 8.6 多 级 指 针 8.7 指针与函数 小结 8.1 指针的基本概念 8.1.1 存储单元、内存地址及指针 指针就是存储单元的地址。 一个变量的指针就是该变量在内存中的存储单元的地址。 存取变量中的数据 直接引用: 按变量名称存取变量值的方式。 间接引用: 将某变量 a 的指针(地址)放在另一个变量pa中, 通过对变量pa的值(a变量的地址),由此地址存取变量 a的方式。 例如l8-1d1: #includestdio.h void main() { int x,*px; float y; x=10; y=23.5; px=x; printf(%d %.1f,x,y); printf(%d %.1f,*px,y); } 变量的指针和指向变量的指针变量 变量的指针:就是变量的在内存中的存储单元的地址。 指针变量: 存放(指向某个变量的)地址的变量。 指针部分 指针:就是变量的地址。 指针变量:是可存放指针的变量。 指针类型:由变量的类型决定。 指针变量的定义与初始化 指针变量的定义 指针变量的初始化 一般形式:数据类型 *指针名=初始地址值; 指针变量的引用 与*运算符 含义 直接访问与间接访问 直接访问:按变量名称存取变量值 间接访问:通过存放变量地址的变量去访问变量 8.1.4 指针作为函数的参数 间接访问主调函数中的变量——地址传递 特点:共享内存,“双向”传递 例8.4 编制函数,求一元二次方程a·x2+b·x+c=0的根(a≠0)的两个实根。 #includemath.h #includestdio.h int root(float a,float b,float c,float *x1,float *x2) { float d; d=b*b-4*a*c; if(d=0) { *x1=(-b+sqrt(d))/2/a; *x2=(-b-sqrt(d))/2/a; return 1; } else return 0; } void main() { float a,b,c,x1,x2; int flag; scanf(%f %f %f,a,b,c); flag=root(a,b,c,x1,x2); if (flag) printf(x1=%.2f x2=%.2f\n,x1,x2); else printf(方程无实数解\n); } 传地址的两个特点: 实参可以是常量、变量或表达式,其实参值是指针数据类型。 在被调函数中,可以通过地址间接访问主调函数中的变量,而达到改变主调函数中的变量值。 例l8-20d4 #include”stdio.h” int x,y,z; void p(int *x,int y) { ++*x; y--; z=*x+y; printf(“A:%d,%d,%d\n”,*x,y,z); } void main( ) { x=2; y=3; z=4; p(x,y); printf(“B:%d,%d,%d\n”,x,y,z); p(y,x); printf(“C:%d,%d,%d\n”,x,y,z); } 指针变量类型应与数组元素类型相同 例: float b[10]={1.3,3.8,9,7}; int a[7]={6,8,5,9,2,0,3}; int *p, *p1, *p2 ; float *f, *f1; p=a[0]; p指向a[0]元素; p1=a; 数组名代表数组的首地址 p2=a[3]; 通过指针引用数组元素 int a[7]={0,0,5,9,2,0,3}; int *p, *q; p=a[0]; *p=4; 给p 指向的数组元素a[0]赋值 p+1 指向的数组元素a[1] *(p+1)=8; 给 p+1 指向的数组元素a[1]赋值 使用指针变量要注意的几个问题 指针变量的值可以被改变,而数组名是地址常量, 不能改变 如: int a[10], *p for(i=0; i10; i++,a++) //错误

文档评论(0)

麻将 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档