指针以及高级使.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文档。上传文档
查看更多
指针以及高级使

指针 学好C语言的关键 浙江大学CADCG国家重点实验室 杨旸 课程要点 复习指针的定义与运算 重温指针的经典问题:swap()函数问题 动态存储管理 字符串与字符指针的应用 多维数组与指针 函数指针 课堂练习 打印出数组int a[7]={1,3,0,-1,9,8,6};中的最大值和最小值。(用指针实现) #includestdio.h int main() { int a[7]={1,3,0,-1,9,8,6}; int *max,*min,*p; //定义了三个指针变量 p=max=min=a; for(;pa+7;p++) //注意指针越界的问题 { if(*p*max) max=p; if(*p*min) min=p; //更新了max和min的值 } printf(the max is:%d\n,*max); printf(the min is:%d\n,*min); return 0; } 指针变量的定义-小结 指针的数据类型的小结 指针的数据类型进阶 指针的数据类型进阶 指针基本运算小结1 指针加(减)一个整数 p++,p--,p+i,p-i.p+i代表地址运算为p+c*I 如果数组元素是整型,p+1表示p的地址加4; 如果数组元素是double型,p+1表示p的地址加8; 如果数组元素是字符型,p+1表示p的地址加1。 p+i指向元素a[i]。可以使用*(p+i)访问元素a[i]。 课堂练习 请问下面程序的执行结果? void main() { int a[][4]={1,3,5,7,9,11,13,15,17,19,21,23}; int (*p)[4]; p=a; printf(“%d\n”,*(*p+2)); printf(“%d\n”,*(*(p+2)); printf(“%d\n”,**p+2); } 指针基本运算小结2 指针变量与自加自减操作符的结合运算 *(p++):先取*p,再使p加1。 *(++p):先使p加1,再取*p。 (*p)++表示,p指向的元素值加1。 如果p当前指向数组a的第i个元素,则: *(p--)相当于a[i--],先取*p,再使p减1。 *(++p)相当于a[++i],先使p加1,再取*p。 *(--p)相当于a[--i],先使p减1,再取*p。 课堂练习 请问下面程序的输出结果是? #includestdio.h main() { int b=3; int arr[]={6,7,8,9,10}; int *ptr=arr; *(ptr++)+=123; printf(“%d,%d\n ”,*ptr,*(++ptr)); } a. 8 8 b.130 8 c.7 7 d.7 8 提示1:判断闰年的方法 leap=year%4==0year%100!=0|| year%400==0; 提示2:利用一个数组来存储每个月的天数 int tab [2][13] = { {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 }, {0, 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 }, }; void month_day ( int year, int yearday, int * pmonth, int * pday) { int k, leap; int tab [2][13] = { {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 }, {0, 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 }, }; ? /* 建立闰年判别条件leap */ leap = (year%4 == 0 year%100 != 0) || year%400 == 0; for ( k = 1; yearday tab[leap][k]; k++) yearday -= tab [leap][k]; *pmonth = k; *pday = yearday; } 课堂练习 请问下面程序的执行会出现什么问题? #includemalloc.h #includestring.h void GetMemory(char *p,int num) { p=(char *)malloc(sizeof(ch

文档评论(0)

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

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

1亿VIP精品文档

相关文档