指向多维数组的指针变量

上传人:ji****n 文档编号:54795556 上传时间:2018-09-19 格式:PPT 页数:74 大小:749.50KB
返回 下载 相关 举报
指向多维数组的指针变量_第1页
第1页 / 共74页
指向多维数组的指针变量_第2页
第2页 / 共74页
指向多维数组的指针变量_第3页
第3页 / 共74页
指向多维数组的指针变量_第4页
第4页 / 共74页
指向多维数组的指针变量_第5页
第5页 / 共74页
点击查看更多>>
资源描述

《指向多维数组的指针变量》由会员分享,可在线阅读,更多相关《指向多维数组的指针变量(74页珍藏版)》请在金锄头文库上搜索。

1、,2. 指向多维数组的指针变量1) 指向数组元素的指针变量 (见例10.11)2)指向由m个元素组成的一维数组的指针变量 类型说明符 (*指针变量名)长度int (*p)4而 p+i ( a+i ) 则指向一维数组 ai 或 *(a+i), *(p+i)+j 是二维数组i行j列的 元素的地址,而 *(*(p+i)+j ) 则是i行j列 元素的值。 中“类型说明符”为所指数组的数据类型。“*”表示其后的变量是指针类型。“长度”表示二维数组分解为多个一维数组时,一维数组的长度,也就是二维组的列数。应注意“(*指针变量名)”两边的括号不可少,如缺少括号则表示是指针数组,意义就完全不同了。,p 是一个

2、指针变量,它指向包含4个元素的一维数组。,例10.11 用指针变量输出二维数组元素的值,(1) 指向数组元素的指针变量,#include void main() int 341,3,5,7,9,11,13,15,17,19,21,23;int*p;for( pa;pa12;) if(pa)printf();printf(,*p); ,运行结果如下:1 3 5 79 11 13 15 19 21 23,若 int a34; 则 int (*p1)4=a; 指向行(0行) 行指针int *p2=a0; 指向元素(0行0列) 列指针int *p3=*a; 指向元素(0行0列) 列指针,(2) 指向由

3、个元素组成的一维数组的指针变量,例10.12 输出二维数组任一行任一列元素的值,#include void main ( ) int a= 1, 3, 5, 7, 9, 11,13, 15,17, 19, 21, 23 ; int (*p),; p = a;scanf( ,);printf(,n, *(*(pi)j); ,运行情况如下: ,(本行为键盘输入) ,,3. 用指向数组的指针作函数参数,例10.13 有一个班,个学生,各学门课,计算总平均分数以及第个学生的成绩。这个题目是很简单的。只是为了说明用指向数组的指针作函数参数而举的例子。用函数average求总平均成绩;用函数search找

4、出并输出第i个学生的成绩。,例 : 3个学生各学4门课,计算总平均分,并输出第n个学生成绩,void main() void average(float *p, int n);void search(float (*p)4, int n);float score34= 65,67,70,60,80,87,90,81,90,99,100,98;average( *score, 12 );search( score, 2 ); ,void average(float *p, int n) float *p_end, sum=0, aver;p_end= p+n-1;for( ; p=p_end;

5、p+)sum=sum+(*p);aver=sum/n;printf(“average=%5.2fn“, aver); void search( float (*p)4, int n ) int i;printf(“ No.%d :n“, n );for( i=0; i4; i+)printf(“%5.2f “, *(*(p+n)+i); ,列指针,行指针,函数说明,float p 4, pni,程序运行结果如下: average The score of No.2 are: . . . .,例 3个学生各学4门课,计算总平均分,并查找一门以上课不及格学生, 输出其各门课成绩, pji,略,在C

6、语言中,可以用两种方法访问一个字符串。 1) 用字符数组存放一个字符串,然后输出该字符串 【例10.15】#include void main( )char string = “I love China!” ;printf(“%sn“, string );,string是数组名,它代表字符数组的首地址。,10. 字符串与指针,10.4.字符串的表示形式,1.数组string的长度? 14,2. strlen(string)的值? 13,2) 用字符串指针指向一个字符串。 【例10.16】main( )char *string = “I love China!” ;printf(“%sn“, s

7、tring ) ;,注意:语句 char *string = “I love China!“; 等价于 char *string;string = “I love China!“;它把字符串常量的首地址赋给指针string。不能理解为把字符串常量赋值给指针变量。*string =“I love China!“;,从以上两个例子中,可以看到:1)字符数组和字符指针的概念不同。2)字符指针指向字符串,而C语言中,字符串按数组方 式处理。因此,字符数组和字符指针的访问方式相同。 例如,均可以使用%s格式控制符进行整体输入输出。但应注意如果不是字符数组,而是整型、实型等数字 型数组,不能用%s,只能逐

8、个元素处理。,也可以设指针变量,用它的值的改变来指向字符串中的不同的字符。,通过指针变量引用字符串,#include #include main( ) int i;char a8=“First“;puts(a); strcpy( a, “Second“ ); for( i=0; *(a+i) != 0 ; i+ ) putchar( *(a+i) ); ,for( i=0; *(a+i) != 0 ; i+ ) putchar( *(a+i) );, printf(“%sn“, a);,a=“Second“; ,等价于ai,First,Second,char a8=“First“;,puts(

9、a);,strcpy( a, “Second“ );,通过字符数组名引用字符串,printf(“%sn“, a); puts(a);,#include main( ) char *p=“First“;puts(p); p=“Second“; for( ; *p != 0 ; p+ )putchar(*p); ,p,char *p=“First“;,puts(p);,p=“Second“;,First,Second,for( ; *p != 0 ; p+ )putchar(*p);,puts(p);,例10.7 将字符串复制为字符串。,#include void ain() char a am

10、a boy,b20;int ;for(0;*()!0;)*()*();*();printf(string a is :%sn,a);printf(string b is:);for(;b!;)printf(,b );printf();,b i =a i ; b i = 0;,通过字符数组名引用字符串,ai!=0,例10.18 将字符串a复制到字符串b。(用指针处理),printf( “string a is: %sn”, p1 );,printf( “string a is: %sn”, b);,printf( “string a is: %sn”, p2 );,程序必须保证使 p1 和 p2

11、 同步移动,当p1=a时,当p2=b时,【思考】编写字符串比较的程序,while( ai=bi ,while( *p = *q ,char a =“first”, b =“Second” p =a ; q =b;,Char *p=“first”, *q=“Second”,10.4.2 字符指针作函数参数,将一个字符串从一个函数传递到另一个函数,可以使用传地址的方式,即用字符数组名或指向字符串的指针变量作参数。在被调用的函数中可以改变字符串的内容,在主调函数中可以得到改变了的字符串。有以下四种情况:,将字符串from复制为字符串to, 不用函数调用。,#include void ain() ch

12、ar from am a boy,to20;int i;for(i0;*(fromi )!0;i)*(toi)*(fromi);*(toi);printf(string from is :%sn,from);printf(string to is: %sn,to );printf();,to i =from i ; to i = 0;,通过字符数组名引用字符串,fromi!=0,char from ” am a boy”, to20;,#include void main() void copy_string(char from , char to );char a = am a teache

13、r;char b =you are a student;printf(“string a=s string s, a,b); printf(“copy string a to string b:n ”);copy_string (a,b);printf(“nstring a=%snstring b=%sn“,a,b); ,void copy_string(char from ,char to ) int ;while(from!) tofrom; to; ,例10.19 用函数调用实现字符串的复制,(1) 用字符数组 作参数,程序运行结果如下:string a I am a teacherst

14、ring b you are a studentcopy string a to string b: string a I am a teacher string b I am a teacher,(2) 形参用字符指针变量,#include void main() void copy_string(char * from, char *to );char *aI am a teacher .;char *byou are a student .;printf(“string a=sn string bsn,a, b );printf(“copy string a to string b:n “);copy_string( a, b ) ;printf(“nstring a=%snstring b=%sn“,a, b ); ,

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 中学教育 > 初中教育

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号