- 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
n15-guo-指针指向字符串
Zhuhai, 2011 GUO Sumei C语言程序设计 郭 素梅 GUO Sumei 内容 指针的基本概念 指针变量和指针运算符 指针引用数组 指针引用字符串 函数指针 指针数组、多重指针 动态内存分配 练习 输入整数a,b 指针pmin指向最小值 指针pmax指向最大值 不增加变量max,min 练习7-17 指针访问数组 指针与数组的等价性 数组的存放 指针指向数组时:a[i] : *(p + i) 指针指向数组时: 说明 利用指针引用数组元素:方便灵活有技巧也意味着容易出错 p++;*p;指向下一个元素,执行*p得到a[1] *p++;先实现*p,后p增1 *(p++)与*(++p):结果a[0]a[1],执行后都指向a[1] ++(*p) 当前指向值加1 关于指针和数组名 数组名也表示数组首元素的地址。 指针p,q:地址的变量。 p+i,p-i,p++,p--,p-q 数组名str:地址常量 str++等非法! 其值在有效期间不变 采用下标法(数组元素写法)x[i]:存入一维数组x[20]中 采用地址法(数组名)求该组数据最小值 采用指针法(指针变量)输出数组全部数据 指针指向数组时: 指针指向字符数组 字符指针 字符指针 指针与字符串 char a[10]=“China”, *pa; pa = a[0]; // pa = a; pa+1 就是a[1]的地址 *(pa+1)就是a[1] *(pa+i)就是a[i] 访问数组元素 字符指针的用法 字符指针 练习 从键盘输入一个字符串, 判断是否为回文。 要求用指针 char s[128], *p, *q; int flg=1; //假设为回文 gets(s); p = s; q=p+strlen(s)-1; while( pq ) { if( *p++ != *q--) { flg=0; break; } } printf(“%s回文\n”, flg?”是”:”不是”); 练习:读程序段 char s[128], *p, *q; int flg=0; gets(s); p = s; q=p+strlen(s)-1; while( pq *p++== *q-- ) { ;} if(p=q) flg=1; 练习 键盘输入一行字符串s 一个字符c 计数:s中c的个数ct。 用指针实现 例如: 输入s为 this is a pen. 和c为 i 的话,ct=? char s[128], *sp; int ct=0; sp = s; gets(s); while( *sp ) { if(*sp++ == c) ct++; } 练习7-18、7-19 读程序段 char *str=“Zhuhai China!”; char *p=str; while(*str) str++; str--; printf(“%c\n”, *str--); printf(“%s\n”, str-4); printf(“%s\n”, p); 类型转换 int a[]={65, 66, 67}; int *pI; unsinged char *pC; pC=(unsinged char *)a; pI=a;//a[0]; 指针指向数据类型强制转换举例 a[0] sizeof(a) a[2] int char a[1] int 到 char PointerEX1.c * C语言程序设计 * 指针 main( ) { int a [ ]={ 1,2,3,4,5,6}; int i; for(i=0;i6;i++) printf(“%d”,a[ i ]); } main( ) { int a[ ]={1,2,3,4,5,6}; int i; for(i=0;i6;i++) printf(“%d”,*(a+i)); } main( ) { int a[ ]={1,2,3,4,5,6}; int i; int *pa=a; for( i=0;i6;i++) printf(“%d”,*(pa+i)); } 下标法 地址法 指针法 复习 当指针变量pa的值与地址常量a相同时,如果变量i为一整数,则a[ i ],*(a+i)和*(pa+i) 三个表达式功能相同,意义相同 a[ i ],*(a+i),*(pa+i)遵循统一的地址计算规则,如果数组元素占 m个字节,则第i个元素的地址为: a+i*m 或 pa+i*m 指针变量法和数组下标法均允许对数组元素随机存取 数组名 地址 指针 地址 数组
文档评论(0)