8-指针类型.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-指针类型.ppt

Page ? * 如果将a设为形参数组,情况就不同了: void fun(int a[],int n){ int i; for (i=0;in;i++,a++) printf (“%d”,*a); } int main( ){ static int arr[5]={1,3,5,7,9}; fun (arr,5); return 0; } 此时,a是形参,只在调用函数fun时才将arr的起始地址传给a。实际上a是一个指针变量,fun函数的头部相当于void fun (int * a,int n) Page ? * The end Thank you! * Page ? * 2. 二维数组中的地址等价关系 二级指针表示 一级指针表示的等价形式 地址 a *a a[0] a[0][0] *a + 1 a[0] + 1 a[0][1] … … … *a + j a[0] + j a[0][j] a+1 *(a + 1) a[1] a[1][0] *(a + 1) + 1 a[1] + 1 a[1][1] … … … *(a + 1) + j a[1] + j a[1][j] … … … … a+i *(a + i) a[i] a[i][0] *(a + i) + 1 a[i] + 1 a[i][1] … … … *(a + i) + j a[i] + j a[i][j] Page ? * 3. 二维数组中递引用的等价关系 a[0] * a a[1] *(a + 1) … … a[i] *(a + i) … … a[i][0] * a[i] a[i][1] *(a[i] + 1) *(*(a + i) + 1) … … a[i][j] *(a[i] + j) *(*(a + i) + j) Page ? * 4. 数组指针的推广 C[2][0][0] C[2][1][0] C[2][2][0] C[2][2][1] C[2][2][2] C[1][0][0] C[1][1][0] C[1][2][0] C[1][2][1] C[1][2][2] C[0][0][0] C[0][0][1] C[0][0][2] C[0][1][0] C[0][1][1] C[0][1][2] C[0][2][0] C[1][2][1] C[1][2][2] c + 2 c c + 1 b[0][0] b[0][1] b[1][0] b[1][1] b[2][0] b[2][1] b[3][0] b[3][1] b[4][0] b[4][1] b b + 1 b + 2 b + 3 b + 4 a[0] a[1] a[2] a[3] a[4] a a + 1 a + 2 a + 3 a + 4 Page ? * 7.2.3 指针与字符串 1. 字符串的指针引用方式 char str1[] =this is a C string; //将字符串常量存入字符数组 char* str2 = “this is a C string.”; //用字符串常量的地址初始化char指针 #include stdio.h int main(){ char c1[]={a,b,c,\0}; char c2[]=efg; char *c3=ijk; printf(c1:%ld,%ld\n,c1,c1); printf(c2:%ld.%ld\n,c2,c2); printf(c3:%ld,%ld\n,c3,c3); return 0; } (1)字符数组c1和c2的内容和地址一致。这说明,c1和c2是两个常量,并且它们都是指针常量,因为它们的内容都是地址。而字符指针形式的字符串c3的内容和地址不同,说明它是一个变量,并且是一个指针变量,因为它的内容也是一个地址。 Page ? * Page ? * 1245052 a b c \0 C1:: 1245048 e f g \0 C2: 1245044 4325428 C3: 4325428 i j k \0 ? ? 局部变量区 常量区 (2)两个以字符数组形式存储的字符串与字符指针变量在内存中的位置靠近,而以字符指针形式表示的字符串值则被保存在距离它们很远的地方。这是因为,当定义一个字符指针形式的字符串时,要在程序的局部变量区为字符指针开辟一个存储空间,同时还要在程序的常量区为字符串常量再开辟一个存储空间,并用这个字符

文档评论(0)

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

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

版权声明书
用户编号:8073070133000003

1亿VIP精品文档

相关文档