- 1、本文档共93页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
内存中数据的存储(6)(程序结束,恢复原状)2021467-18-292120022004200620082010变量的访问例i=3;-----直接访问指针变量…...…...2000200420062005整型变量i10变量i_pointer20012002200320003例*i_pointer=20;-----间接访问20202直接访问inti=1,j=2,k=3;1-2921i2002(i)2004200620082010指针—变量的地址inti=1,j=2,k=3;123-29212002(i)2004(j)2006(k)20082010ijk指向一维数组的指针(6)(2)通过数组名计算数组元素地址,输出元素的值main(){ inta[10]; inti; for(i=0;i10;i++) scanf(%d,a[i]); printf(\n); for(i=0;i10;i++) printf(%d,*(a+i));}指向一维数组的指针(7)(3)用指针变量指向数组元素main(){ inta[10]; int*p,i; for(i=0;i10;i++) scanf(%d,a[i]); printf(\n); for(p=a;p(a+10);p++) printf(%d,*p);}三种方法的比较:用下标法比较直观,能直接知道是第几个元素;而使用指针法则执行效率更高图示指向一维数组的指针(8)使用指针变量时,应注意:指针变量可实现使本身的值改变。P++合法;但a++不合法(a是数组名,代表数组首地址,在程序运行中是固定不变的。)要注意指针变量的当前值main(){inta[10];int*p,i;p=a;for(;pa+10;p++)scanf(%d,p);printf(\n);for(;p(a+10);p++)printf(%d,*p);}不能p增加:p=a;指向一维数组的指针(9)*p++相当于*(p++),因为*与++优先级相同,且结合方向从右向左,其作用是先获得p指向变量的值,然后执行p=p+1;*(p++)与*(++p)意义不同,后者是先p=p+1,再获得p指向的变量值若p=a,则输出*(p++)是先输出a[0],再让p指向a[1];输出*(++p)是先使p指向a[1],再输出p所指的a[1](*p)++表示的是将p指向的变量值+1举例例inta[]={1,2,3,4,5,6,7,8,9,10},*p=a,i;数组元素地址的正确表示:
(A)(a+1)(B)a++(C)p(D)p[i]?数组名是地址常量p++,p--(?)a++,a--(?)a+1,*(a+2)(?)指向二维数组的指针a[0]a[1]a[2]aa+1a+2chara[3][4];*a*(a+1)*(a+2)数组元素是长度为4的数组a、a+1、a+2都是指针,它们的基类型是长度为4的字符数组,它们与下面定义的指针p同类型char(*p)[4];a是一个长度为3的数组对于二维数组:(1)a是数组名,包含三个元素a[0],a[1],a[2](2)每个元素a[i]又是一个一维数组,包含4个元素aa+1a+2*(*(a+0)+1)*(a[0]+1)inta[3][4];a[0]a[1]a[2]200020082016200020022008201020162018a[0][0]a[0][1]a[1][0]a[1][1]a[2][0]a[2][1]a[0][2]a[0][3]a[1][2]a[1][3]a[2][2]a[2][3]基类型行指针与列指针a[0]+1a[1]+1a[2]+1*(a+0)+1*(a+1)+1*(a+2)+1对二维数组inta[3][4],有a-----二维数组的首地址,即第0行的首地址a+i-----第i行的首地址a[i]?*(a+i)------第i行第0列的元素地址a[i]+j?*(a
文档评论(0)