- 1、本文档共10页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
10指针2
第10章 指针
10.3 指针 + 一维数组
10.3.1 指针的加减法
数值变化量:取决于所指对象的大小。
p++和p--的增减量 char *p; 1 sizeof(char) int *p; 2 sizeof(int) float *p; 4 sizeof(float) 逻辑含义:
p++ p指向下一个同类元素的地址 p-- p指向上一个同类元素的地址 p=p+k p指向下k个同类元素的地址 p=p-k p指向上k个同类元素的地址
10.3.2 用指针指向数组元素
数组元素的引用方法:
下标法 指针法 int a[10], *p;
for(p=a; pa+10; p++)
printf(%d , *p); a[i]=12;的实现机制:
*(a+i)=12;
[]:变址运算符 数组名:
①数组的起始地址;
②指针常量。
10.3.3 强化概念,程序找错
10.3.3.1 数组名是地址常量!
main()
{ int a[10],i,*p;
for(i=0; i10; i++)
scanf(%d, a+i);
for(i=0; i10; i++)
printf(%d, *(a+i));
} main()
{ int a[10],i,*p;
for(i=0; i10; i++,a++)
scanf(%d, a);
for(p=a; pa+10; p++)
printf(%d, *p);
} 上机实验:使用指针实现对数组元素的赋值及输出。
10.3.3.2 注意指针所指的位置
main()
{ int a[10],i,*p;
p=a;
for(i=0; i10; i++) scanf(%d,p++);
for(i=0; i10; i++,p++) printf(%d,*p);
} 上机实验:将上述程序完善。
10.3.4 用一维数组名(指针)作为函数参数
10.3.4.1 复习、对比已学相关章节
8.5.1 一维数组名作为函数参数10.2 指针变量作为函数参数10.3.4.2 整数数组中的求和
/* n的意义:保证数组访问不越界 */
int sum(int *x, int n);
main()
{ int a[8]={1,2,3,4,5,6,7,8},s;
s= sum(a,8);
}
int sum(int *x,int n)
{ int i,s=0; for(i=0; in; i++)
s=s+x[i]; /* s=s+*(x+i); */
return(s);
}
等价关系:强化对“数组元素的引用方法”的理解!
int sum(int *x, int n); int sum(int x[],int n); s=s+x[i]; s=s+*(x+i)
10.4 字符指针 + 一维字符数组(字符串)
字符串:存储于“一维字符数组”中的有效字符。
10.3.1 字符串的表现形式
可以用字符指针指向一个字符串
初始化字符串的二字符数组字符指针 char s[10]=abcde; char *p=abcde; char s[]=abcde; char *p;
p=abcdef;
p=xyzw; /* p是变量 */ 初始化字符串的错误形式:
字符数组字符指针 char s[10];
s=abcde;
数组名是常数char *p;
*p=abcdef
*p表示一个字符单元 char s[10];
s[]=abcde;
表达式不合法 char s[10];
s[10]=abcde;
表达式不合法,数组越界 输入字符串的二类方法:
字符数组字符指针 char s[10];
scanf(%s, s); char s[10],t[10], *p;
p=s;
scanf(%s, p);
p=t;
scanf(%s, p); 在函数被执行之初,系统已为数组变量分配空间。 在使用指针变量之前,程序员要确保指针变量指向单元
10.3.2 用一维字符数组(字符指针)作为函数参数
10.3.2.1 实现strcpy(dest, src)
#define N 10
void mystrcpy(char *dest, char *src);
main()
{ char s[N]=abcdef,t[N]=12345,tmp[N];
mystrcpy(tmp, s);
mystrcpy(s, t);
mystrcpy(t, tmp);
}
void mystrcpy(char *dest,
您可能关注的文档
最近下载
- 2025河北秦皇岛市海港区招聘中小学教师371人笔试参考题库附答案解析.docx VIP
- 《项目管理基础教程》课件.ppt VIP
- 青霉素过敏试验及过敏反应的预防(共35张PPT).pptx VIP
- 第一章 运动的描述【速记清单】(解析版)-2024-2025学年高一物理单元速记·巧练(人教版2019必修第一册).docx VIP
- 第二章 匀变速直线运动的研究【速记清单】(解析版)-2024-2025学年高一物理单元速记·巧练(人教版2019必修第一册).docx VIP
- 农行某市支行各岗位廉政风险点及防控措施一览表(最新最全面版本) .pdf VIP
- Positioning课件.ppt VIP
- 建行某市支行各岗位廉政风险点及防控措施一览表(最全最新版本) .pdf VIP
- 徕卡TS30全站仪简易操作说明.pdf VIP
- 川渝地区矿山生态修复技术规范 第二部分 建材矿山.pdf VIP
文档评论(0)