第7章指针7.ppt

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

与*运算符 直接访问与间接访问 直接访问:按变量名存取变量值 间接访问:通过存放变量地址的变量去访问变量 对二维数组 int a[3][4],有 a-----二维数组的首地址,即第0行的首地址 a+i-----第i行的首地址 a[i] ? *(a+i)------第i行第0列的元素地址 a[i]+j ? *(a+i)+j -----第i行第j列的元素地址 *(a[i]+j) ? *(*(a+i)+j) ? a[i][j] 用函数指针变量作函数参数 例 7.10 调用函数求两个矩阵之和 main() { int i,j,a[M][N]={ {1,2,3,4}, {5,6,7,8} }; int b[M][N]={{10,20,30,40}, {50,60,70,80} }; print(a); print(b); add(b,a); print(b); for(i=0;iM;i++) { for(j=0;jN;j++) printf(%6d,a[i][j]); printf(\n); } printf(\n); } #define M 2 #define N 4 void add(int (*p1)[N],int (*p2)[N]) { int *q1,*q2,(*u)[N]=p1+M; for(;p1u;p1++,p2++) { q1=*p1; for(q2=*p2;q1*p1+N;q1++) { *q1+=*q2; q2++; } } } void print(int (*p)[N]) { int *q,(*u)[N]=p+M; for(;pu;p++) { for(q=*p;q*p+N;q++) printf(%6d,*q); printf(\n); } printf(\n); } 7.3.3 用字符数组和字符型指针访问字符串 1.用字符型指针变量整体输入/输出字符串 用字符型数组和字符指针两种方法整体输入输出字符串。 #includestdio.h main() { char s[20]=I am a student!,*p=s; char *pt=You are a teacher!; printf(%s\n,s); printf(%s\n,pt); scanf(%s,s); printf(%s\n,s); scanf(%s,p); printf(%s\n,p); } 2.对使用字符指针变量和字符数组的讨论 (1)存储内容不同 (2)分配的内存单元不同 (3)赋值方法不同。 (4)指针变量的值是可以改变的, 字符数组名是地址常量, 它的值是不能改变的 char *p , char s[16]; scanf(%s,s); /* s是地址常量, 有确定地址, 正确 */ scanf (“%s”,p); /* p未指向一个具体的地址,不应这样做 */ char str[16]=I am a srudent.; /* 只能在变量定义时整体赋值 */ 可以用赋值语句将字符串首地址赋值给字符指针变量 char *a; a=I am a srudent.; 3.用字符数组或指针作函数参数传递字符串 void strcpy(char s1[],char s2[]) { int i=0; while(s2[i]!=\0) { s1[i]=s2[i]; i++; } s1[i]=\0; } void strcpy(char *s1, char *s2) { for( ; *s2!=\0; s1++, s2++) *s1=*s2; *s1=\0; } 7.3.4 指针数组和指向指针的指针

文档评论(0)

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

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

1亿VIP精品文档

相关文档