1、字符串的存储与访问 字符串的访问 char str[N]; 第i个字符的地址:str+i 第i个字符:*(str+i)
练习: 1、若有如下定义和语句,请写出通过指针p取出 字符‘g’的表达式:*(p+6) char s[13]="abcdefghijk", *p=s; 2、下面程序的输出结果为: void main( ) { char *p,s[ ]="ABCD"; for(p=s;p<s+4;p++) printf("%s\n",p); } ABCD BCD CD D 3、写出程序的运行结果: #include <string.h> main( ) { char *p="abcde\0fg\0"; printf("%d",strlen(p)); } 5 五、 指针数组 可以加下群466572167(群内有各种项目学习资料) 指针数组: 数组的所有元素都是指针类型数据(指针变量)。 定义形式: 类型名 *数组名[元素个数]; 例如:char *name[10]; 具体应用:一般用于处理一组字符串数据。
char *name[]={“Tom”,”Mike”,”Mary”,”Peter”}; for(i=0;i<4;i++) puts(name[i]); 练习:可以加下群466572167(群内有各种项目学习资料) 1、定义a为共有5个元素的一维整型数组,同时定义p为指向a数组地址的指针变量的语句为 int a[5],*p=a; 2、设int x[ ]={1,2,3,4}, y, *p=&x[1]; ,则执行语句 y=(*--p)++后y的值为 --p为&x[0] 内容为:1 结果为1 ?此时x[0]值变为多少?2 3、下面程序的输出结果为: int *ptr; int arr[]={6,7,8,9,10}; ptr=arr; *(ptr+2)+=2; printf("%d,%d\n",*ptr,*(ptr+2)); 6,10 4、若输入abcdef回车,写出程序的运行结果: #include "string.h" func(char str[]) {int num=0; while(*(str+num)!='\0') num++; return num; } void main( ) { char str[10],*p=str; gets(p); printf("%d",func(p));} 6 |
|
来自: thchen0103 > 《c语言学习资料》