C语言程序设计立体化教程课件:指针与数组_第1页
C语言程序设计立体化教程课件:指针与数组_第2页
C语言程序设计立体化教程课件:指针与数组_第3页
C语言程序设计立体化教程课件:指针与数组_第4页
C语言程序设计立体化教程课件:指针与数组_第5页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

指针实现学生综合测评成绩管理指针与数组复习数组a[0]a[1]a[2]a[3]a[4]复习:一维数组在内存中的存放方法?

inta[5];数组元素的地址:&a[i]数组首地址:&a[0]或a指针与一维数组inta[5];//定义一个5个元素的整型数组int*p; //定义一个指向整型变量的指针变量p=a;在数组中,数组名表示该数组的首地址,即第一个元素的地址,它是一个常量。因此p=a;与p=&a[0];等价,都代表将数组首地址赋值给指针变量p,即指针变量p指向a数组的第一个元素。如图所示。指针与一维数组在p指向首地址前提下,如依次进行以下操作,指针变量p将不断地指向新的数组元素。(1)p++;则表示p向后移动一个位置,指向a[1](2)p--;则表示p向前移动一个位置,重新指向a[0](3)p=p+3;则表示p向后移动三个位置,指向a[3]指针与一维数组1、指针与一维数组的对应关系

inta[10],*p=a;使p指向a数组的第一个元素a[0]各元素的指针按存储单元递增a[0]a[2]a[4]a[3]a[6]a[7]a[1]a[5]a[8]a[9]memorypp+1p+2p+92、用指针访问数组的一般形式对下标为i的元素访问:

a[i],*(a+i),*(p+i)对a[i]的地址表示:

&a[i],a+i,p+i

指向数组访问数组的两种方式:下标方式,指针方式指针与一维数组(1)下标法(常用,很直观)#include<stdio.h>main(){intscore[10],i;printf("请输入10个学生的成绩\n");for(i=0;i<10;i++)scanf("%d",&score[i]);printf("输出的10个学生的成绩为\n");for(i=0;i<10;i++)printf("%3d",score[i]);printf("\n");}(2)用数组名计算数组元素的地址。(效率与下标法相同,不常用)#include<stdio.h>main(){intscore[10],i;printf("请输入10个学生的成绩\n");for(i=0;i<10;i++)scanf("%d",&score[i]);printf("输出的10个学生的成绩为\n");for(i=0;i<10;i++)printf("%3d",*(score+i));printf("\n");}指针与一维数组(3)用指针访问各元素。(常用,效率高)#include<stdio.h>main(){intscore[10],*p,i;printf("请输入10个学生的成绩\n");for(i=0;i<10;i++)scanf("%d",&score[i]);printf("输出的10个学生的成绩为\n");for(p=score;p<score+10;p++)printf("%3d",*p);printf("\n");}

指针与字符数组

(一)字符串的表示形式1.用字符数组实现#include<stdio.h>main(){charstring[]="IloveChina!";printf("%s\n",string);}2.用字符指针实现

#include<stdio.h>main(){char*string="IloveChina!";printf("%s\n",string);}一、字符串的表现形式

C语言中,有两种方式可以实现字符串:字符数组、字符指针。

指针与字符数组

举例

#include<stdio.h>main(){char*ps="thisisabook";intn=10;ps=ps+n;printf("%s\n",ps);}输出字符串中n个字符后的所有字符。ps+10ps

举例

在输入的字符串中查找有无‘k’字符。#include<stdio.h>main(){charst[20],*ps;inti;printf("inputastring:\n");ps=st;scanf("%s",ps);for(i=0;ps[i]!='\0';i++)if(ps[i]=='k'){printf("thereisa'k'inthestring\n");break;}if(ps[i]=='\0')printf("Thereisno'k'inthestring\n");}

举例

将字符串a复制到字符串b。方法一#include<stdio.h>voidmain(){chara[]="Iamaboy.",b[20],*p1,*p2;inti;p1=a;p2=b;

for(;*p1!='\0';p1++,p2++)*p2=*p1;*p2='\0';printf("stringais:%s\n",a);printf("stringbis:%s\n",b);printf("\n");}方法二#include<stdio.h>voidmain(){char*a="Iamaboy.",*b;

b=a;printf("stringais:%s\n",a);printf("stringbis:%s\n",b);printf("\n");}注意:若a,b都是字符指针,则可以用b=a,即将a的地址赋给b,但是若a,b是字符数组,则不能用b=a,应用strcpy(b,a)

比较

字符数组与字符串指针变量的区别存放的是首地址字符数组字符串指针变量每个元素放一个字符不能整体赋值chars[6];s=“abcde”;/*不对*/可以

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论