购买

¥30.0

加入VIP
  • 专属下载券
  • 上传内容扩展
  • 资料优先审核
  • 免费资料无限下载

上传资料

关闭

关闭

关闭

封号提示

内容

首页 C语言程序设计教程指针(新)

C语言程序设计教程指针(新).ppt

C语言程序设计教程指针(新)

烟雨梦兮
2018-10-14 0人阅读 举报 0 0 0 暂无简介

简介:本文档为《C语言程序设计教程指针(新)ppt》,可适用于IT/计算机领域

第章指针指针与指针变量指针与函数指针与数组指针与字符串指针数组与命令行参数程序举例第章指针C语言程序设计教程计算机教学中心李勇第章指针指针与指针变量指针的概念内存与变量地址内存地址:内存是计算机用于存储数据的存储器以一个字节作为存储单元为了便于访问给每个字节单元一个唯一的编号第一字节单元编号为以后各单元按顺序连续编号这些单元编号称为内存单元的地址。变量地址:变量所分配存储空间的首字节单元地址(字节单元编号)。计算机教学中心李勇第章指针变量的三要素:名字、类型与值每个变量都通过变量名与相应的存储单元相连系具体分配哪些单元给变量由C编译系统完成变量名到对应内存单元地址的变换。变量分配存储空间的大小由类型决定。变量的值则是指相应存储单元的内容。内存存取方式直接存取:把直接按变量名或地址存取变量值的方式称为“直接存取”方式。间接存取:通过定义一种特殊的变量专门存放内存或变量的地址然后根据该地址值再去访问相应的存储单元。计算机教学中心李勇第章指针系统为特殊变量p(用来存放地址的)分配的存储空间地址是p中保存的是变量a的地址,即当要读取a变量的值时不是直接通过a变量,也不是直接通过保存的内存单元的地址去取值而是先通过变量p得到p的值即a的地址再根据地址读取它所指向单元的值。这种间接的通过变量p得到变量a的地址再存取变量a的值的方式即为“间接存取”。通常称变量p指向变量a变量a是变量p所指向的对象计算机教学中心李勇第章指针指针的概念在C语言中用指针来表示一个变量指向另一个变量这样的指向关系。所谓指针即地址。一个变量的指针即该变量的地址如就是指向变量a的指针。指针变量:专门存放地址的变量如p即是一个指针变量,它存放的是a的地址。计算机教学中心李勇第章指针指针变量的定义与初始化指针变量的定义类型标识符*指针变量名例:float*p(定义p为指向实型变量的指针变量)char*p(定义p为指向字符型变量的指针变量)在指针变量定义中*是一个说明符它表明其后的变量是指针变量如p是指针变量,而不要认为“*p”是指针变量。指针变量定义时指定的数据类型不是指针变量本身(变量存放的值)的数据类型而是指针变量所指向的对象(或称目标)的数据类型指针变量存放的是所指向的某个变量的地址值而普通变量保存的是该变量本身的值指针变量并不固定指向一个变量可指向同类型的不同变量计算机教学中心李勇第章指针()指针运算符与地址运算符与指针引用有关的两个运算符:与*。 :取地址运算符 *:指针运算符或称指向运算符、间接访问运算符。指针指向的对象的表示形式:*指针变量此处*是访问指针所指对象的运算符,与指针定义时的*不同。指针变量初始化计算机教学中心李勇第章指针()指针变量初始化若有定义:inta,*p语句仅仅定义了指针变量p但指针变量并未指向确定的变量(或内存单元)。因为这些指针变量还没有赋给确定的地址值只有将某一具体变量的地址赋给指针变量之后指针变量才指向确定的变量(内存单元)。指针变量初始化:在定义指针时同时给指针一个初始值如:inta,*p=a计算机教学中心李勇第章指针()指针变量的引用①*指针变量名代表所指变量的值。②指针变量名代表所指变量的地址。有定义:inta,*p=a用*p来表示p指向的对象a,*p与a是等价的。*p可以象普通变量一样使用。例如:a=*p=scanf("d",*p)scanf("d",p)printf(“dd”,*p,a)注意:*与具有相同的优先级结合方向从右到左。这样*p即(*p),是对变量*p取地址它与a等价p与(*p)等价a与*(a)等价。计算机教学中心李勇第章指针指针运算指针的赋值运算()将变量地址值赋给指针变量使指针指向该变量。设有如下定义:inta,b,*pa,*pbfloat*pf第一行定义了整型变量a,b及指针变量pa,pb。pa、pb还没有被赋值因此pa、pb没有指向任何变量,下面语句完成对pa,pb的赋值:pa=apb=b计算机教学中心李勇第章指针例如:intj=,k=int*pointer,*pointerpointer=jpointer=k计算机教学中心李勇第章指针()相同类型的指针变量间的赋值pa与pb都是整型指针变量它们间可以相互赋值如:pb=pa即pa,pb都指向变量a此时a、*pa、*pb是等价的。指针指向变化如下图:注意:只有相同类型的指针变量才能相互赋值如pf=pa是不允许的。因为pa是整型指针,pf是浮点型指针。计算机教学中心李勇第章指针(3)给指针变量赋空值给指针变量赋空值说明该指针不指向任何变量。“空”指针值用表示是在头文件stdioh中预定义的常量其值为0在使用时应加上预定义行,如:#include"stdioh"int*pa=亦可以用下面的语句给指针赋“空值”:pa=或:pa=’’这里指针pa并非指向地址单元而是具有一个确定的“空值”表示pa不指向任何变量。注意:指针虽然可以赋值但却不能把其它的常量地址赋给指针。例如:pa=是非法的。计算机教学中心李勇第章指针例指针定义与初始化main(){inta,bint*pointer,*pointera=b=pointer=apointer=bprintf("d,dn",a,b)printf("d,dn",*pointer,*pointer)}计算机教学中心李勇第章指针程序运行结果:计算机教学中心李勇第章指针例从键盘上输入两个整数到a、b,按由大到小输出。#include<stdioh>main(){inta,b,*pa=a,*pb=b,*p*定义指针变量pa、pb,如下页图a*scanf(″dd″,a,b)if(*pa<*pb){p=pa*进行指针交换,如下页图b,c*pa=pbpb=p}printf(″na=d,b=dn″,a,b)printf(″nmax=d,min=d″,*pa,*pb)*pa指向大数pb指向小数*}计算机教学中心李勇第章指针若输入:↙输出结果:a=,b=max=,min=(b)(c)指针变化示意图计算机教学中心李勇第章指针指针的算术运算()加减运算:一个指针可以加、减一个整数n其结果与指针所指对象的数据类型有关。指针变量的值应增加或减少“n×sizeof(指针类型)”。加减运算常用于数组的处理。对指向一般数据的指针加减运算无实际意义。例如:inta*p=a*xx=p*实际上是p加上*个字节赋给xx指向数组的第四个分量*对于不同基类型的指针指针变量“加上”或“减去”一个整数n所移动的字节数是不同的。例如:floata*p=a*xp=p*实际上是p加上*个字节赋给xx依然指向数组的第四个分量*计算机教学中心李勇第章指针()自增自减运算指针变量自增、自减运算具有上述运算的特点但有前置后置、先用后用的考虑务请小心。例如:inta*p=a*xx=p*x指向第一个元素分量p指向第二个元素*x=p*x、p均指向数组的第二个分量**p相当于*(p)。*(p)与(*p)含义不同前者表示地址自增后者表示当前所指向的数据自增。计算机教学中心李勇第章指针*a的含意是什么(答:a或*p)(*p)相当于什么(答:a)思考:若有定义inta,*p执行了“p=a”,则:“*p”的含意是什么?(答:相当于a)计算机教学中心李勇第章指针指针的关系运算与基本类型变量一样指针可以进行关系运算。在关系表达式中允许对两个指针进行所有的关系运算。若p,q是两个同类型的指针变量则:p>q,p<q,p==q,p!=qp>=q都是允许的。指针的关系运算在指向数组的指针中广泛的运用假设p、q是指向同一数组的两个指针执行p>q的运算其含义为若表达式结果为真(非0值)则说明p所指元素在q所指元素之后。或者说q所指元素离数组第一个元素更近些。注意:在指针进行关系运算之前指针必须指向确定的变量或存储区域即指针有初始值另外只有相同类型的指针才能进行比较。计算机教学中心李勇第章指针多级指针把指向指针型数据的指针变量称为指向指针的指针或称多级指针。二级指针的定义形式如下:数据类型**指针变量例如:inta,*p,**ppa=p=app=p思考:如何用pp得到a的值?假设变量a的地址为指针p的地址为二级指针pp的地址为。a、p、pp三者的关系如上图。pp()p()a()计算机教学中心李勇第章指针指针与函数指针作为函数参数利用指针作函数参数可以实现函数之间多个数据的传递当形参为指针变量时其对应实参可以是指针变量或存储单元地址。函数形参为指针变量用指针变量或变量地址作实参例编写一个交换两个变量的函数在主程序中调用实现两个变量值的交换。计算机教学中心李勇第章指针程序如下:#include<stdioh>voidswap(int*p,int*p)*函数声明*main(){inta,bint*pa,*pbscanf(″dd″,a,b)pa=a*pa指向变量a*pb=b*pb指向变量b*swap(pa,pb)printf(″na=d,b=dn″,a,b)}或:swap(a,b)计算机教学中心李勇第章指针接上页:voidswap(int*p,int*p){inttemptemp=*p*交换指针p、p所指向的变量的值**p=*p*p=temp}程序运行结果如下:输入:↙输出:a=b=计算机教学中心李勇第章指针两点说明:()若在函数体中交换指针变量的值实参a、b的值并不改变指针参数亦是传值。例如:int*pp=pp=pp=p不要希望如此完成a,b值的交换。()函数中交换值时不能使用无初值的指针变量作临时变量。例如:int*p*p=*p*p=*p*p=*pp无确定值对p的使用可能带来不可预期的后果。计算机教学中心李勇第章指针指针函数指针函数:是指返回值为指针的函数指针函数的定义形式:类型标识符*函数名(参数)例如:int*fun(inta,intb){函数体语句}在函数体中有返回指针或地址的语句形如:return(变量名)或return(指针变量)并且返回值的类型要与函数类型一致。计算机教学中心李勇第章指针例分析如下程序main(){inta,b,*pint*max(intx,inty)scanf(“d,d”,a,b)p=max(a,b)printf(“max=d”,*p)}int*max(intx,inty){ifx>y)return(x)elsereturn(y)}计算机教学中心李勇第章指针指向函数的指针一个函数包括一组指令序列存储在某一段内存中这段内存空间的起始地址称为函数的入口地址称函数入口地址为函数的指针。函数名代表函数的入口地址可以定义一个指针变量其值等于该函数的入口地址指向这个函数这样通过这个指针变量也能调用这个函数。这种指针变量称为指向函数的指针变量。定义指向函数的指针变量的一般形式为:类型标识符(*指针变量名)()例如:int(*p)()*指针变量p可以指向一个整型函数*float(*q)()*指针变量q可以指向一个浮点型函数*计算机教学中心李勇第章指针刚定义的指向函数的指针变量亦象其它指针变量一样要赋以地址值才能引用。当将某个函数的入口地址赋给指向函数的指针变量就可用该指针变量来调用所指向的函数给函数指针赋初值:将函数名(函数的入口地址值)赋给指针变量例如intm,(*p)()intmax(inta,intb)则可以p=max*p指向函数max()*指针调用函数的一般形式为:(*指针变量)(实参表)如上例:m=(*p)(,)*比较m=max(,)*计算机教学中心李勇第章指针注意:用函数指针调用函数是间接调用没有参数类型说明C编译系统也无法进行类型检查因此在使用这种形式调用函数时要特别小心。实参一定要和指针所指函数的形参类型一致。函数指针可以作为函数参数此时当函数指针每次指向不同的函数时可执行不同的函数来完成不同的功能例函数max()用来求一维数组的元素的最大值在主调函数中用函数名调用该函数与用函数指针调用该函数来实现。计算机教学中心李勇第章指针程序如下:#include"stdioh"#defineMmain(){floatsumf,sumpfloataM={,,,,,,,}float(*p)()*定义指向函数的指针p*floatmax(floata,intn)*函数声明*p=max*函数名(函数入口地址)赋给指针p*sump=(*p)(a,M)*用指针方式调用函数*sumf=max(a,M)*用函数名调用max()函数*printf("sump=fn",sump)printf("sumf=fn",sumf)}计算机教学中心李勇第章指针程序接上页:floatmax(floata,intn){intkfloatss=afor(k=k<nk)if(s<ak)s=akreturns}程序运行结果:sump=sumf=计算机教学中心李勇第章指针指向函数的指针的使用步骤:()定义一个指向函数的指针变量形如:float(*p)()()为函数指针赋值格式如下:p=函数名注意:赋值时只需给出函数名不要带参数。()通过函数指针调用函数调用格式如下:s=(*p)(实参)计算机教学中心李勇第章指针指针与数组指向一维数组的指针数组名是一个常量指针它的值为该数组的首地址指向数组的指针的定义方法与指向基本类型变量的指针的定义方法相同例如:inta[]={,,,,}int*pp=a(把数组元素a的地址赋给指针变量p)p=a(把数组的首地址赋给指针变量p)计算机教学中心李勇第章指针C语言规定:数组名代表数组首地址,是一个地址常量。因此下面两个语句等价:p=ap=a在定义指针变量的同时可赋初值:inta,*p=a(或int*p=a)等价于:int*pp=a两句。计算机教学中心李勇第章指针指向数组的指针变量pap或ap或a*(a)或*(p)计算机教学中心李勇第章指针通过指针引用数组元素*p=表示对p当前所指的数组元素赋以一个值。C规定:p指向数组的下一元素(而不是将p值简单地加)。p意味着使p的原值(地址)加d个字节(d为一个数组元素所占的字节数)。如果p的初值为a,则:()pi和ai就是ai的地址或者说它们指向a数组的第i个元素(见下页图)。()*(pi)或*(ai)是pi或ai所指向的数组元素即ai。()指向数组的指针变量也可以带下标如pi与*(pi)、ai等价。计算机教学中心李勇第章指针综上所述引用一个数组元素有二法:()下标法:如ai、pi形式()指针法:如*(ai)或*(pi)。其中a是数组名p是指向数组的指针变量其初值p=a。计算机教学中心李勇第章指针main(){intaintifor(i=i<i)scanf("d",ai)printf("n")for(i=i<i)printf("d",ai)}例用三种方法输出数组全部元素。()下标法计算机教学中心李勇第章指针main(){intaintifor(i=i<i)scanf("d",ai)printf("n")for(i=i<i)printf("d",*(ai))}()通过数组名计算数组元素地址,输出元素的值计算机教学中心李勇第章指针()用指针变量指向数组元素main(){intaint*p,ifor(i=i<i)scanf("d",ai)printf("n")for(p=ap<(a)p)printf("d",*p)}三种方法的比较:用下标法比较直观能直接知道是第几个元素而用指针法则执行效率更高。计算机教学中心李勇第章指针使用指针变量时应注意:()指针变量可实现使本身的值改变。P合法但a不合法(a是数组名代表数组首地址在程序运行中是固定不变的。)()要注意指针变量的当前值。计算机教学中心李勇第章指针()*p相当于*(p)因为*与优先级相同且结合方向从右向左其作用是先获得p指向变量的值然后执行p=p()*(p)与*(p)意义不同后者是先p=p再获得p指向的变量值。若p=a则输出*(p)是先输出a[]再让p指向a[1]输出*(p)是先使p指向a[1]再输出p所指的a[1]。()(*p)表示的是将p指向的变量值1计算机教学中心李勇第章指针小结、如何使得一个指针指向一个数组?)利用数组首元素的地址)利用数组名、如何引用一个数组元素的值?)下标法:a利用数组名加下标b利用指针变量名加下标)指针法:a利用对数组名的间接访问b利用对指针变量的间接访问。计算机教学中心李勇第章指针例:编制函数求一个数组中最大的值并返回其下标分析:、程序的输入输出、函数调用时参数的传递方式、算法:)定义一个变量max用于存放最大元素的值)先将第一个元素的值赋给max)遍历数组(从第二个元素开始)并与max比较如大于则将该数组值赋给max并保存其下标。计算机教学中心李勇第章指针main(){inta={,,,,,,,,,),max,xbseek(a,max,xb)printf(“d,dn”,max,xb)}seek(int*a,int*x,int*y){int*p=a,i=*x=*ppfor(p<(a)p,i)if(*p>*x){*x=*p*y=i}}计算机教学中心李勇第章指针二维数组与多维数组的指针表示法二维数组的地址设有一个二维数组a,它有三行四列:inta数组名a:代表整个二维数组的首地址也就是第行的首地址。ai:代表第i行的首地址。(见下页图)计算机教学中心李勇第章指针数组名a代表整个二维数组的首地址:上图a数组包含三个元素:a,a,a而每个元素又是一个一维数组,它包含个元素(即个列元素),如:a又包含:a,a,a,a计算机教学中心李勇第章指针一维数组名ai:代表第i行的首地址即第i行中第列元素的地址(既ai)。aij:代表第i行中的第j个元素的地址,即为aij。注意地址变化的单位数值在不同的场合的实际字节数是不同的:“a”中的“”实际代表数组中一行元素所占的总字节数“ai”中的“”代表数组中一个元素所占的字节数。计算机教学中心李勇第章指针a代表第行的首地址,a代表第行的首地址,a代表第行的首地址每行存放个整型数据(即个元素占个字节),因此,这里的含义是:*=个字节计算机教学中心李勇第章指针计算机教学中心李勇第章指针例用指针表示法输出二维数组的各元素。#include<stdioh>main(){staticinta={{,,,},{,,}}intk,j,*pfor(j=j<j)*方式*{for(k=k<k)printf("d",*(ajk))*aj是j行首地址ajk是j行k列元素的地址*putchar(‘n’)}putchar(‘n’)计算机教学中心李勇第章指针接上页:for(j=j<j)*方式*{for(k=k<k)printf("d",*(*(aj)k))**(aj)是j行首地址*(aj)k是j行k列元素的地址*putchar(‘n’)}p=a*p指向数组的第一个元素*for(j=j<j)*方式*{for(k=k<k)printf("d",*(p))*输出p所指示的元素*putchar(‘n’)}}计算机教学中心李勇第章指针输出的结果是:12 12 12计算机教学中心李勇第章指针指向二维数组的指针变量有两种情况:一是直接指向数组元素的指针变量二是指向一个含有m个元素的一维数组。这两种不同形式的指针变量其使用方法不同。指向数组元素的指针变量,即简单指针变量如:int*p,ap=a()指向由m个元素组成的一维数组的指针变量定义形式: 类型(*指针变量)元素个数如:int(*p)计算机教学中心李勇第章指针注意:()int(*p)定义一个指针变量p,p指向包含个元素的一维数组。()pi与*(pi)的区别:pi是指向第i行的指针(第i行的首地址)*(pi)是指向第i行第个元素的地址两者数值相等但含义不同:pi的增值将以行长为单位而*(pi)增值将以元素长度为单位。计算机教学中心李勇第章指针即:pi将指向第i行再下一行的首地址而*(pi)将指向第i行首元素的下一个元素地址。(见下图)设inta,(*p)p=a如果p先指向a,则p不是指向a,而是指向a计算机教学中心李勇第章指针例main(){staticinta={,,,,,,,,,,,}int(*p),i,jp=ascanf("i=d,j=d",i,j)printf("add=dn",i,j,*(*(pi)j))}计算机教学中心李勇第章指针上节回顾、指向数组的指针的数据类型、指向数组的指针的初始化、利用指针法进行数组元素的引用、指向数组的指针的移动、数组越界问题。计算机教学中心李勇第章指针指针与字符串字符串的指针表示法回顾:利用字符数组完成字符串编程。、字符数组的定义及初始化:例如:charstr=“student”、字符数组的输入输出:A)逐个字符的输入输出B)字符串整体的输入输出。、字符串中各个字符的引用。计算机教学中心李勇第章指针、字符指针变量的定义:char*指针变量如:char*p、字符指针的初始化:A)在定义时初始化指针变量使指针指向一个字符串。例如:char*string=“ILoveChina!”B)先定义后初始化。例如:char*strstr=“Ilovechina”思考:能否charstrstr=“Ilovechina”以上语句的含义:定义str为指针变量它指向字符型数据且赋值语句把字符串“Ilovechina”的首地址赋给了指针变量str。计算机教学中心李勇第章指针、利用字符指针实现字符串的整体输入输出A)输入:chara,*str=a注意:char*strscanf(“s”,str)scanf(“s”,str)×B)输出:char*str=“student”printf(“sn”,str)(为何不用*str如用*str,程序应如何变化?)对字符串的整体输出实际上还是从指针所指示的字符开始逐个显示直到遇到字符串结束标志符‘’为止。而在输入时亦是将字符串的各字符自动顺序存储在p指示的存储区中并在最后自动加上‘’。计算机教学中心李勇第章指针、用指针变量来实现对字符串的访问利用字符指针对字符串的访问与利用指向数组的指针来访问各个数组元素的方法相同需要注意的是字符串结束标志‘’的使用。例:将一字符串中大写英文字母转换成小写字母。main(){chara,*str=ascanf("s",str)for(*str!=''str)if(*str>='A'*str<='Z')*str=printf("sn",a)}思考:为什么不用str输出?计算机教学中心李勇第章指针小结、掌握字符指针的定义及初始化、理解字符指针与字符串的指向关系、利用字符指针引用字符串或其中某个字符、注意字符指针移动后指向的变化、注意‘’标志的作用。计算机教学中心李勇第章指针思考题:将一已知字符串第n个字符开始的剩余字符复制为另一新的字符串。分析:、不要求利用函数调用进行程序设计、由编程要求可以分析出所用的数据结构、算法:)利用一字符指针p指向原始字符串首地址)根据输入的数字决定p的移动位移)利用循环从p所指向字符开始复制。计算机教学中心李勇第章指针main(){inti,nchara="computer"charb,*p,*qp=aq=bscanf("d",n)if(strlen(a)>=n)p=n*指针指到要复制的第一个字符*for(*p!=''p,q)*q=*p*q=''*字符串以’’结尾*printf("Stringa:sn",a)printf("Stringb:sn",b)}计算机教学中心李勇第章指针输入:↙输出:computermputer考虑一下若输出语句改为如下语句会如何?printf(“stringais:sn”,p)printf(“stringbissn”,q)计算机教学中心李勇第章指针程序举例例1编写一个交换两个变量的函数在主程序中调用实现两个变量值的交换。(假定a和b两个变量)分析:此程序要求进行模块化程序设计其中main函数完成数据的输入及结果的输出并进行交换函数(swap)的调用swap函数完成两个变量值的交换。编程的重点在于考虑如何从swap函数中得到两个返回值及main函数和swap函数参数的传递方法。计算机教学中心李勇第章指针voidswap(intx,inty){inttemptemp=xx=yy=x}main(){inta,bscanf(“dd”,a,b)swap(a,b)printf(“dd”,a,b)}voidswap(int*x,int*y){int*temp=temp=xx=yy=x}main(){inta,b,*p,*qscanf(“dd”,a,b)p=aq=bswap(p,q)printf(“dd”,a,b)}voidswap(int*x,int*y){inttemptemp=*x*x=*y*y=temp}main(){inta,b,*p,*qscanf(“dd”,a,b)p=aq=bswap(p,q)printf(“dd”,a,b)}计算机教学中心李勇第章指针两点说明:()若在函数体中交换指针变量的值实参a、b的值并不改变指针参数亦是传值。例如:int*pp=pp=pp=p不要希望如此完成处理。()函数中交换值时不能使用无初值的指针变量作临时变量。例如:int*p*p=*p*p=*p*p=*pp无确定值对p的使用可能带来不可预期的后果。计算机教学中心李勇第章指针例:编制求一个整型数组中所有偶数元素和及奇数元素和的函数并在main函数中输出。分析:、数组元素的输入、程序结果的输出、函数调用时参数传递的方式、算法:遍历所给数组的全部元素如果某个数组元素为偶数则求和并将结果存入偶数和变量sum反之求和后存入奇数和变量sum中。计算机教学中心李勇第章指针main(){inta={,,,,,,,,,},sum=,sum=sum(sum,sum,a)printf(“ddn”,sum,sum)}voidsum(int*x,int*y,int*z){intifor(i=i<i){if(*(zi)==)*x=*(zi)else*y=*(zi)}}计算机教学中心李勇第章指针例:编制一函数其功能是将一个字符串中所有数字符号删除形成一个新字符串并在main函数中输出。分析:、在main函数中完成待处理字符串的输入及结果输出其中新产生的字符串用另外的字符数组存放、考虑函数调用时参数的传递方式、算法:在函数del中遍历待处理字符串找到非数字符号即存入结果数组中。计算机教学中心李勇第章指针main(){charstr,strgets(str)del(str,str)puts(str)}voiddel(char*p,char*q){for(*p!=‘’p)if(!(*p>=‘’*p<=‘’))*q=*p*q=‘’}计算机教学中心李勇第章指针本章小结、指针是一种存放地址的变量像其他的变量一样须在使用前定义。指针变量的命名遵循与其他变量相同的命名规则。指针变量定义格式如下:类型名*指针变量名 、两个与指针变量有关的运算符:(取地址运算符)和*(指针运算符)。其中:运算符只能作用于变量包括基本类型变量和数组的元素不能作用于数组名和常量其结果是取运算对象的存储地址。*运算符也称间接访问运算符其操作对象是地址通过对该地址的间接访问达到存取变量值的目的。计算机教学中心李勇第章指针、可以利用指针变量方便地对数组进行存取。如果指针变量p的初值为数组a的首地址则pi和ai就是ai的地址*(pi)和*(ai)既是数组元素ai的值。、C语言规定向被调函数进行参数传递只能是单向值传递即传值的方式采向被调函数传指针变量的方式则变相地实现了参数传递中非常重要的一种方式传地址从而使得主调函数与被调函数发生了某种意义上的关联这样使得程序的编制更加灵活比如我们可以通过这种参数传递方式从被调函数返回多个值。计算机教学中心李勇第章指针●    、指针指向字符串时是把字符串的首地址赋给字符指针。可以通过*运算符对字符指针进行操作以达到操作字符串各个字符的目的具体操作方法与利用指向数组的指针相同。计算机教学中心李勇

用户评价(0)

关闭

新课改视野下建构高中语文教学实验成果报告(32KB)

抱歉,积分不足下载失败,请稍后再试!

提示

试读已结束,如需要继续阅读或者下载,敬请购买!

评分:

/78

¥30.0

立即购买

VIP

意见
反馈

免费
邮箱

爱问共享资料服务号

扫描关注领取更多福利