1. 1、本文档共10页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 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,

文档评论(0)

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

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

1亿VIP精品文档

相关文档