文档详情

字符串2.ppt

发布:2017-01-17约1.52万字共110页下载文档
文本预览下载声明
指针变量作为函数参数 例10 . 3 对输入的两个整数按大小顺序输出 #include stdio.h void main() {void swap(int *p1,int *p2);  int a,b;  int *p1,*p2; scanf(″%d,%d″,&a,&b);  p1 =&a; p2 =&b;   if(a<b)  swap( p1 , p2 );  printf(″\n%d,%d\n″,a,b); } void swap(int *p1,int *p2) { int temp; temp=*p1; *p1=*p2; *p2=temp; } 下面的函数: void swap(int a,int b) { int temp; temp=a; a=b; b=temp; /* 只在函数中交换了局部变量 */ } 同样不可用函数: void swap(int *p,int b) 或 void swap(int a,int *p) 只能用函数 void swap(int *p1,int *p2) 处理主调用函数中的变量 定义一个指向数组元素的指针变量的方法 例如:int a[10],*p; p=a; (a是数组的首地址,注意a前没有地址符) 或 p=a[0]; 虽然a和p都是地址,它们是不同的: a 是数组的首地址,一旦由系统分配,就是一个固定的值; 而p是指针变量,是可以改变的. 所以 a++是错误的,而p++是正确的. 指向数组元素的指针 10.3.2通过指针引用数组元素 如果 int a[6],*p=a; 引用一个数组元素,可以用: (1) 下标法,如a[i]形式; (2) 地址或指针法,如*(a+i)或*(p+i) 注意: a[0]-a[5]合法,a[6]非法; *(a)-*(a+5)合法,*(a+6)非法; *(p)-*(p+5)合法,*(p+6)非法; 字符串与指针 字符串的表示形式 例 定义一个字符数组,对它初始化, 然后输出该字符串 #include stdio.h void main() {char *s=″abcdefg″; printf(″%s\n″,s); } 输出 abcdefg (1) 用字符数组存放一个字符串,然后输出该字符串。 输出 cdefg 的语句是: printf(″%s\n″,s+2); s+2 是指针 输出 efg 的语句是: printf(″%s\n″,s+4); s+4是指针 输出字符 f 的语句是: printf(″%c\n″,*(s+5)); *(s+5)是字符 注意:输出字符串用%s 和指针; 输出字符用%c 和*(指针) 指针运算与数据: #include stdio.h void main( ) { int a[5]={2,4,6,8,10},*p; p=a; printf(%d,,*(p+2)); printf(%d,,*++p); printf(%d,,*p++); printf(%d\n,*++p);} 显示 6,4,4,8 注意 1 p+2 没有改变p 的值; 注意 2 ++p,和 p++的区别. 调用函数实现数组的相反顺序存放: #include stdio.h void main() {void inv(int x[ ],int n); //函数声明 int i,a[10]={3,7,9,11,0,6,7,5,4,2}; printf(The original array:\n); for(i=0;i10;i++) printf(%d ,a[i]); printf(\n); inv(a,10); //调用函数 printf(The array has been inverted:\n); for(i=0;i10;i++) printf(%d ,a[i]); printf(\n); } // 用数组元素: void inv(int x[ ],int n) {int temp,i,j,m=(n-1)/2; for(i=0;i=m;i++) { j=n-1-i; temp=x[i];x[i]=x[j];x[j]=temp
显示全部
相似文档