- 1、本文档共10页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
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,
您可能关注的文档
- (人教版)二年级音乐教案 上册牧童谣1.doc
- (同课异构)画家和牧童.doc
- (沪教版)探究活动包一年级上-活动2-奇妙的手指画.doc
- 00-指针.ppt
- 00填写办法:工业动火.doc
- 011指针.doc
- 02 石材常识.doc
- 02 启事.ppt
- 06《我爱我‘家’》.ppt
- 08XX专柜满送活动草案.doc
- 浙江省临海市白云高级中学2025届高三历史3月月考试题.doc
- 云南拾谷县第一中学2024_2025学年高二物理上学期10月月考试题.doc
- 2025版高考生物总复习第13讲基因的分离定律教案苏教版.doc
- 湖北省黄石实验高中2024_2025学年高一历史下学期期末考试模拟卷.doc
- 通史版2025版高考历史大一轮复习专题七近代化的曲折发展__中日甲午战争至五四运动前4第4讲从维新思想到新文化运动课后达标检测含解析新人教版.doc
- 2024年高考数学考试大纲解读专题04导数及其应用含解析文.doc
- 河南省许汝平九校联盟2024_2025学年高一语文上学期期末考试试题扫描版无答案.doc
- 江西省吉安市吉水县第二中学2024_2025学年高一历史上学期第二次月考试题.doc
- 北京市平谷区2025届高三政治一模考试试题含解析.doc
- 2025届中考物理第四讲物态变化专项复习测试无答案新人教版.docx
文档评论(0)