配色: 字号:
第8章 指针
2016-06-21 | 阅:  转:  |  分享 
  
共53张例将数组a中的n个整数按相反顺序存放voidinv(intx,intn){intt,
p,i,j,m=(n-1)/2;i=x;j=x+n-1;p=x+m;for(;i<=p;i++,j
--){t=i;i=j;j=t;}}main(){inti,a[10]={3,7,9,
11,0,6,7,5,4,2};inv(a,10);printf("Thearrayhasbeenr
everted:\n");for(i=0;i<10;i++)printf("%d,",a[i]);
printf("\n");}实参用数组,形参用指针变量37911067542a[0]a[1]a
[2]a[3]a[4]a[5]a[6]a[7]a[8]a[9]xp=x+ma数组60711594
723ijijijjiji共53张例将数组a中的n个整数按相反顺序存放void
inv(intx,intn){intt,i,j,p,m=(n-1)/2;i=x;j=x+n
-1;p=x+m;for(;i<=p;i++,j--){t=i;i=j;j=t;}
}main(){inti,a[10],p=a;for(i=0;i<10;i++,p++)
scanf("%d",p);p=a;inv(p,10);printf("Thearrayh
asbeenreverted:\n");for(p=a;p,p);}实参与形参均用指针变量共53张例将数组a中的n个整数按相反顺序存放voidinv(i
ntx[],intn){intt,i,j,m=(n-1)/2;for(i=0;i<=m;i++)
{j=n-1-i; t=x[i];x[i]=x[j];x[j]=t;}}main(){
inti,a[10],p=a;for(i=0;i<10;i++,p++)scanf("%d",p
);p=a;inv(p,10);printf("Thearrayhasbeenrever
ted:\n");for(p=arr;p实参用指针变量,形参用数组共53张一级指针变量与一维数组的关系intp与intq[10]
数组名是指针(地址)常量p=q;p+i是q[i]的地址数组元素的表示方法:下标法和指针法,即若p=q,
则p[i]?q[i]?(p+i)?(q+i)形参数组实质
上是指针变量,即intq[]?intq在定义指针变量(不是形参)时,不能把intp写成intp[];
系统只给p分配能保存一个指针值的内存区(一般2字节);而给q分配210字节的内存区共53张指针与二维数组二维数组的
地址对于一维数组:(1)数组名array表示数组的首地址,即array[0]的地址;(2)数组名array是地址常量(3)
array+i是元素array[i]的地址(4)array[i]?(array+i)arrayintarray[1
0];共53张对于二维数组:(1)a是数组名,包含三个元素a[0],a[1
],a[2](2)每个元素a[i]又是一个一维数组,包含4个
元素aa+1a+2((a+0)+1)(a[0]+1)inta[3][4];a[0]a[1]a[2
]200020082016200020022008201020162018a[0][0]a[0][1]a[
1][0]a[1][1]a[2][0]a[2][1]a[0][2]a[0][3]a[1][2]a[1][3]a[2
][2]a[2][3]基类型行指针与列指针a[0]+1a[1]+1a[2]+1(a+0)+1(a+1)+1
(a+2)+1共53张对二维数组inta[3][4],有a-----二维数组的首地址,即第0行的首地址a+i-
----第i行的首地址a[i]?(a+i)------第i行第0列的元素地址a[i]+j?(a+i)+j----
-第i行第j列的元素地址(a[i]+j)?((a+i)+j)?a[i][j]a+i=&a[i]=a[i]=(a
+i)=&a[i][0],值相等,含义不同a+i?&a[i],
表示第i行首地址,指向行a[i]?(a+i)?&a[i][0],表示第i行第0列元素地址,指向列inta[3][
4];a[0]a[1]a[2]200020082016200020022008201020162018a
[0][0]a[0][1]a[1][0]a[1][1]a[2][0]a[2][1]a[0][2]a[0][3]a[
1][2]a[1][3]a[2][2]a[2][3]aa+1a+2共53张inta[3][4];a[0]
[0]a[0][1]a[1][0]a[1][1]a[2][0]a[2][1]a[0][2]a[0][3]a[1][
2]a[1][3]a[2][2]a[2][3]二维数组元素表示形式:(1)a[1][2](2)(a[1]+2)(3
)((a+1)+2)(4)(&a[0][0]+14+2)地址表示:(1)a+1(2)&a[1][
0](3)a[1](4)(a+1)(5)(int)(a+1)行指针列指针地址表示:(1)&a[1]
[2](2)a[1]+2(3)(a+1)+2(4)&a[0][0]+14+2共53张表示形式含义地址a
二维数组名,数组首地址a[0],(a+0),a第0行第0列元素地址a+1第1行首地址a[1],(a+1)第1行
第0列元素地址a[1]+2,(a+1)+2,&a[1][2]第1行第2列元素地址(a[1]+2),((a+1)+2)
,a[1][2]第1行第2列元素值2000200020082008201213共53张二维数组的指针变量指
向二维数组元素的指针变量例指向二维数组元素的指针变量main(){staticinta[3][4]={1,3,
5,7,9,11,13,15,17,19,21,23};intp;for(p=a[0];p;p++){if((p-a[0])%4==0)printf("\n"); printf("%4d",
p);}}p=a;p=&a[0][0];p=(a+0);p=a;p
=a;p=&a[0][0];p=(int)a;p=a;inta[3][4]
;a[0][0]a[0][1]a[1][0]a[1][1]a[2][0]a[2][1]a[0][2]a[0][3]
a[1][2]a[1][3]a[2][2]a[2][3]p共53张指向一维数组的指针变量定义形式:数据类型
(指针名)[一维数组维数];例int(p)[4];()不能少int(p)[4]与int
p[4]不同p的值是一维数组的首地址,p是行指针可让p指向二维数组某一行如inta[3][4],
(p)[4]=a;inta[3][4];a[0][0]a[0][1]a[1][0]a[1][1]a[2][0
]a[2][1]a[0][2]a[0][3]a[1][2]a[1][3]a[2][2]a[2][3]aa+1a
+2pp+1p+2p[0]+1或p+1p[1]+2或(p+1)+2(p+1)或(p)[1]((
p+1)+2)一维数组指针变量维数和二维数组列数必须相同共53张例一维数组指针变量举例main(){st
aticinta[3][4]={1,3,5,7,9,11,13,15,17,19,21,23};inti,j,
(p)[4];for(p=a,i=0;i<3;i++,p++)for(j=0;j<4;j+
+)printf("%d",(p+j));printf("\n");}p=
a[0];p=a;p=&a[0][0];p=&a[0];p=a[0];p=a;p=&a[0][0]
;p=&a[0];inta[3][4];a[0][0]a[0][1]a[1][0]a[1][1]a[2]
[0]a[2][1]a[0][2]a[0][3]a[1][2]a[1][3]a[2][2]a[2][3]ppp
?p[0][j]共53张例二维数组与指针运算main(){inta[3][4]={{1,2,3,4},{
3,4,5,6},{5,6,7,8}};inti;int(p)[4]=a,q=a[0];fo
r(i=0;i<3;i++){if(i==0) (p)[i+i/2]=q+1; else p
++,++q;}for(i=0;i<3;i++)printf("%d,",a[i][i]);
printf("%d,%d\n",((int)p),q);}运行结果:2,4,7,5,312343
4565678pq2pqpq共53张二维数组的指针作函数参数用指向变量的指针变量用指向一维数
组的指针变量用二维数组名实参形参数组名intx[][4]指针变量int(q)[4]数组名intx[][4
]指针变量int(q)[4]数组名a数组名a指针变量p1指针变量p1若inta[3][4];int
(p1)[4]=a;intp2=a[0];指针变量p2指针变量intq共53张例3个学生各
学4门课,计算总平均分,并输出第n个学生成绩main(){voidaverage(floatp,intn);
voidsearch(float(p)[4],intn);floatscore[3][4]={{65,
67,79,60},{80,87,90,81},{90,99,100,98}};average(score,12);
search(score,2);}voidaverage(floatp,intn){floatp_
end,sum=0,aver;p_end=p+n-1;for(;p<=p_end;p++) sum=sum
+(p);aver=sum/n;printf("average=%5.2f\n",aver);}void
search(float(p)[4],intn){inti;printf("No.%d:\n
",n);for(i=0;i<4;i++)printf("%5.2f",((p+n)+i));
}列指针行指针函数说明floatp[][4]65527960808790819099100
98pp?p[n][i]共53张例3个学生各学4门课,计算总平均分,并查找一门以上课不及格学生,输出其
各门课成绩voidsearch(float(p)[4],intn){inti,j,flag;f
or(j=0;ji)<60)flag=1; if(flag==1) {printf("No.%disfail,hisscore
sare:\n",j+1); for(i=0;i<4;i++) printf("%5.1f",((p+j)+
i)); printf("\n"); }}}main(){voidsearch(float(
p)[4],intn);floatscore[3][4]={{...},{...},{...}};sea
rch(score,3);}6552796080879081909910098p?p[j][i]
共53张二维数组与一维数组指针变量的关系如inta[5][10]与int(p)[10];
二维数组名是一个指向有10个元素的一维数组的指针常量p=a+i使p指向二维数组的第i行((p+i)+j)?a[i
][j]二维数组形参实际上是一维数组指针变量,即intx[][10]
?int(x)[10]变量定义(不是形参)时两者不等价系统只给p分配能保存一个指针值的内存区(一般2字节);而给a分
配2510字节的内存区共53张8.4字符串的指针和指向字符串的指针变量字符串表示形式用字符数组实现例
main(){charstring[]=“IloveChina!”;pri
ntf(“%s\n”,string);printf(“%s\n”,string+7);
}IloveChistring[0]string[1]string[2]string[3]string
[4]string[5]string[6]string[7]string[8]string[9]stringstri
ng[10]string[11]string[12]string[13]n!a\0共53张用字符指针实现例
main(){charstring=“IloveChina!”;
printf(“%s\n”,string);string+=7;while(
string){putchar(string[0]);
string++;}}IloveChistringn
!a\0字符指针初始化:把字符串首地址赋给string?charstring;string=“Il
oveChina!”;stringstring!=0共53张字符串指针作函数参数例用函数调用实现字符串复制
(1)用字符数组作参数(2)用字符指针变量作参数aIamateaceh\0r.fromaby
uarasutndetoboet.\0Iaaeceh\0r.t.\0
mtavoidcopy_string(charfrom[],charto[]){inti=0;w
hile(from[i]!=''\0''){to[i]=from[i]; i++;}to[i]=
''\0'';}main(){chara[]="Iamateacher.";charb[]="Youar
eastudent.";printf("string_a=%s\nstring_b=%s\n",a,b);c
opy_string(a,b);printf("\nstring_a=%s\nstring_b=%s\n",a,b);}
voidcopy_string(charfrom,charto){for(;from!=''\0'';from+
+,to++)to=from;to=''\0'';}main(){chara="Iama
teacher.";charb="Youareastudent.";printf("string_a=%
s\nstring_b=%s\n",a,b);copy_string(a,b);printf("\nstring_
a=%s\nstring_b=%s\n",a,b);}共53张字符指针变量与字符数组charcp;与
charstr[20];str由若干元素组成,每个元素放一个字符;而cp中存放字符串首地址charstr[20];
str=“IloveChina!”;(?)charcp;cp=“Il
oveChina!”;(?)str是地址常量;cp是地址变量cp接受键入字符串时,必须先开辟存储空间例c
harstr[10];scanf(“%s”,str);(?)而charcp;
scanf(“%s”,cp);(?)改为:charcp,str[10];c
p=str;scanf(“%s”,cp);(?)共53张字符串与数组关系字符串用一维
字符数组存放字符数组具有一维数组的所有特点数组名是指向数组首地址的地址常量数组元素的引用方法可用指针法和下标法数组名作函数
参数是地址传递等区别存储格式:字符串结束标志赋值方式与初始化输入输出方式:%s%ccharstr[]={“He
llo!”};(?)charstr[]=“Hello!”;
(?)charstr[]={‘H’,‘e’,‘l’,‘l’,‘o’,‘!’};(?)cha
rcp=“Hello”;(?)inta[]={1,2,3,4
,5};(?)intp={1,2,3,4,5};
(?)charstr[10],cp;inta[10],p;str=“Hello”;
(?)cp=“Hello!”;(?)a={1,2,3,4,5};(?)p={1,2,3,4,5
};(?)scanf(“%s”,str);printf(“%s”,str);gets(str);puts(str);
共53张第8章指针在C语言中,数据类型可分为:基本数据类型,构造数据类型,指针类型,空类型四大
类。指针是C语言中广泛使用的一种数据类型。运用指针编程是C语言最主要的风格之一。利用指针变量可以表示各种数据结构;能很方
便地使用数组和字符串;并能象汇编语言一样处理内存地址,从而编出精练而高效的程序。学习指针是学习C语言中最重要的一环,能否正确理解
和使用指针是我们是否掌握C语言的一个标志。C程序设计中使用指针可以: 使程序简洁、紧凑、高效有效地表示复杂的数据结构动态
分配内存得到多于一个的函数返回值共53张8.1指针与指针变量变量与地址程序中:inti;
floatk;内存中每个字节有一个编号----
-地址…...…...2000200120022005内存02003ik编译或函数调用时为其分配内存单元
变量是对程序中数据存储空间的抽象共53张…...…...2000200420062005整型变量i10
变量i_pointer200120022003指针与指针变量指针:一个变量的地址指针变量:专门存放变量地址的变量20
00指针指针变量变量的内容变量的地址指针变量变量变量地址(指针)变量值指向地址存入指针变量共53张
&与运算符含义含义:取变量的地址单目运算符优先级:2结合性:自右向左含义:取指针所指向变量的内容单目运算符
优先级:2结合性:自右向左两者关系:互为逆运算理解…...…...2000200420062005整型变量
i10变量i_pointer2001200220032000指针变量i_pointer-----指针变量,它的内容
是地址量i_pointer----指针的目标变量,它的内容是数据&i_pointer---指针变量占用内存的地址2000
10i_pointeri_pointer&i_pointerii_pointer&i&(i_po
inter)ii_pointer(&i)i_pointer=&i=&(i_po
inter)i=i_pointer=(&i)共53张直接访问与间接访问直接访问:按变量地址
存取变量值间接访问:通过存放变量地址的变量去访问变量例i=3;-----直接访问指针变量…...
…...2000200420062005整型变量i10变量i_pointer200120022003200
03例i_pointer=20;-----间接访问20共53张指针变量…...…..
.2000200420062005整型变量i10变量i_pointer2001200220032000整型
变量k例k=i;--直接访问k=i_point
er;--间接访问10例k=i;
k=i_pointer;共53张8.2变量的指针和指向变量的指针变量指针变量与其所指向的变量之间的关系
指针变量的定义一般形式:[存储类型]数据类型指针名;3变量i2000i_pointeri_po
interii_pointer&ii_pointeri=3;i_pointer=33变量i2000i_po
interi_pointerii_pointer&ii_pointeri=3;i_pointer=3合法标识
符指针变量本身的存储类型指针的目标变量的数据类型表示定义指针变量不是‘’运算符例intp1,p2;
floatq;staticcharname;注意:1、intp
1,p2;与intp1,p2;2、指针变量名是p1,p2,不是p1,p23、指针变量只能指向定
义时所规定类型的变量4、指针变量定义后,变量值不确定,应用前必须先赋值共53张指针变量的初始化一般形式:[存储类型]
数据类型指针名=初始地址值;赋给指针变量,不是赋给目标变量例inti;intp=
&i;变量必须已说明过类型应一致例intp=&i;inti;例
inti;intp=&i;intq=p;用已初始化指针变量作
初值例main(){inti;staticintp=
&i;..............}(?)不能用auto变
量的地址去初始化static型指针共53张多级指针定义形式如下:数据类型指针变量例:
inta,p,pp;a=22; p=&a pp=&p;&p=4100
&a=400022pp(4800)p(4100)a(4000)例:8.2二级指针的使用
#include voidmain() {inta=22,p,pp; p=
&a; pp=&p; printf(“p=%d\n”,p); printf(“pp=%d\n
”,pp); }共53张例main(){inti=10;
intp;p=i;printf(“%d”,p);
}危险!例main(){inti=10,k;in
tp;p=&k;p=i;printf
(“%d”,p);}指针变量必须先赋值,再使用…...…...2000200420062005整
型变量i10指针变量p200120022003随机指针变量的引用共53张零指针与空类型指针零指针:(空指针
)定义:指针变量值为零表示:intp=0;p指向地址为0的单元,系统保证该单元不作它用表示指针变量值没有意义
#defineNULL0intp=NULL:p=NULL与未对p赋值不同用途:避免指针变量的
非法引用在程序中常作为状态比较例intp;......
while(p!=NULL){...…
}void类型指针表示:voidp;使用时要进行强制类型转换例charp1;
voidp2;p1=(char)p2;p2=(void)p1;表示不
指定p是指向哪一种类型数据的指针变量共53张例指针的概念main(){inta;intpa
=&a;a=10;printf("a:%d\n",a);printf("pa:%d\n",pa)
;printf("&a:%x(hex)\n",&a);printf("pa:%x(hex)\n",pa);
printf("&pa:%x(hex)\n",&pa);}运行结果:a:10pa:10&a:f86(hex)p
a:f86(hex)&pa:f88(hex)…...…...f86f8af8cf8b整型变量a10指针变量pa
f87f88f89f86共53张例输入两个数,并使其从大到小输出main(){intp1,p2
,p,a,b;scanf("%d,%d",&a,&b);p1=&a;p2=&b;if(a{p=p1;p1=p2;p2=p;}printf("a=%d,b=%d\n",a,b);
printf("max=%d,min=%d\n",p1,p2);}运行结果:a=5,b=9
max=9,min=5…...…...指针变量p1指针变量p2000200820022004200
6指针变量p2整型变量b整型变量a5200692008200620082006请牢记:指针变量中
只能存放地址共53张指针变量作为函数参数——地址传递特点:共享内存,“双向”传递swap(intx,inty)
{inttemp;temp=x;x=y;y=temp;}main(){i
nta,b;scanf("%d,%d",&a,&b);if(aprintf("\n%d,%d\n",a,b);}例将数从大到小输出…...…...20002008200A
2002200420065变量a变量b(main)9变量temp变量y变量x(swap)5
5959COPY共53张指针变量作为函数参数——地址传递特点:共享内存,“双向”传递swap(intx,
inty){inttemp;temp=x;x=y;y=temp;}main
(){inta,b;scanf("%d,%d",&a,&b);if(ab);printf("\n%d,%d\n",a,b);}例将数从大到小输出值传递…...…...200
02008200A2002200420065变量a变量b(main)9运行结果:5,9共53张
swap(intp1,intp2){intp;p=p1;p1=p2;
p2=p;}main(){inta,b;intpointer_1,pointer_2;sc
anf("%d,%d",&a,&b);pointer_1=&a;pointer_2=&b;if(awap(pointer_1,pointer_2);printf("\n%d,%d\n",a,b);}…...200
02008200A200220042006200C200E2010...59整型变量a整型变量b(
main)指针pointer_1指针pointer_220002002(swap)指针p1指针p2整型p59
20002002COPY5例将数从大到小输出共53张swap(intp1,intp2){i
ntp;p=p1;p1=p2;p2=p;}main(){inta,b;
intpointer_1,pointer_2;scanf("%d,%d",&a,&b);pointe
r_1=&a;pointer_2=&b;if(aprintf("\n%d,%d\n",a,b);}…...20002008200A200220042006200
C200E2010...59整型变量a整型变量b(main)指针pointer_1指针pointer_2
2000200259例将数从大到小输出运行结果:9,5地址传递共53张swap(intp1,int
p2){intp;p=p1;p1=p2;p2=p;}main(){
inta,b;intpointer_1,pointer_2;scanf("%d,%d",&a,&b)
;pointer_1=&a;pointer_2=&b;if(ainter_2);printf("\n%d,%d\n",a,b);}运行结果:9,9编译警告!结果不对!int
x;intp=&x;x;例将数从大到小输出…...20002008200A200220042006
200C200E2010...59整型变量a整型变量b(main)指针pointer_1指针pointe
r_2200020029920002002COPY(swap)指针p1指针p2指针p假设2000
指针变量在使用前必须赋值!共53张swap(intx,inty){intt;t=x;x=y;
y=t;}main(){inta,b;intpointer_1,pointer_2;s
canf("%d,%d",&a,&b);pointer_1=&a;pointer_2=&b;if(aswap(pointer_1,pointer_2);printf("\n%d,%d\n",a,b);}运行结
果:5,9例将数从大到小输出值传递…...20002008200A200220042006200C200E
2010...59整型a整型b(main)pointer_1pointer_2200020029CO
PY(swap)整型x整型y整型t5559共53张运行结果:5,9例将数从大到小输出swap(int
p1,intp2){intp;p=p1;p1=p2;p2=p;}main(
){inta,b;intpointer_1,pointer_2;scanf("%d,%d",&
a,&b);pointer_1=&a;pointer_2=&b;if(a_1,pointer_2);printf("%d,%d",pointer_1,pointer_2);}…...
20002008200A200220042006200C200E2010...59整型a整型b(m
ain)pointer_1pointer_22000200220002002COPY(swap)指针p1指针p
2指针p2000地址传递20002002共53张8.3数组的指针和指向数组的指针指向数组元素的指针
变量例intarray[10];intp;p=&array[0];
//?p=array;或intp=&array[0];或intp=array;array[0
]array[1]array[2]array[3]array[9]...整型指针p&array[0]p数组名是表
示数组首地址的地址常量共53张指针的运算指针变量的赋值运算p=&a;(将变量a地址?p)p
=array;(将数组array首地址?p)p=&array[i];(将数组元素地址?p)p1=p2
;(指针变量p2值?p1)不能把一个整数?p,也不能把p的值?整型变量如inti,
p;p=1000;(?)i=p;(?)
指针变量与其指向的变量具有相同数据类型共53张指针的算术运算:p?i?p?i?d(i为整型数,d为p指向的
变量所占字节数)p++,p--,p+i,p-i,p+=i,p-=i等若p1与p2指向同一数组,p1-p2=两指针间元
素个数?(p1-p2)/dp1+p2无意义例p指向float数,则p+1?p+1?4例p指向int型数组
,且p=&a[0];则p+1指向a[1]例inta[10];intp=&a[2];
p++;p=1;例inta[10];intp1=&a[2];
intp2=&a[5];则:p2-p1=3;a[0]a[1]a[2]a[3]a[4]a[5]a[
6]a[7]a[8]a[9]a数组pp+1,a+1p+i,a+ip+9,a+91共53张指针变量的关系运
算若p1和p2指向同一数组,则p1p2表示p1指的元素在后p1==p2
表示p1与p2指向同一元素若p1与p2不指向同一数组,比较无意义p==NULL或p!=NULL共53张数组元素表示方法
a[0]a[1]a[2]a[3]a[9]...aa+9a+1a+2地址元素下标法a[0]a[1]a
[2]a[9]a[0]a[1]a[2]a[3]a[9]...pp+9p+1p+2地址元素指针法p
(p+1)(p+2)(p+9)[]变址运算符a[i]?(a+i)a[i]?p[i]?(p+
i)?(a+i)a(a+1)(a+2)(a+9)p[0]p[1]p[2]p[9]共53张a[0
]a[1]a[2]a[3]a[4]例通过指针引用数组元素的方法main(){inta[5],pa,i
;for(i=0;i<5;i++) a[i]=i+1;pa=a;for(i=0;i<
5;i++) printf("(pa+%d):%d\n",i,(pa+i));for(i=0;i<5;i++
) printf("(a+%d):%d\n",i,(a+i));for(i=0;i<5;i++) pri
ntf("pa[%d]:%d\n",i,pa[i]);for(i=0;i<5;i++) printf("a[%d
]:%d\n",i,a[i]);}12345pa共53张例inta[]={1,2,3,4,5,6,7,8,9,10},p=a,i;数组元素地址的正确表示:(A)&(a+1)(B)a++(C)&p(D)&p[i]?数组名是地址常量p++,p--(?)a++,a--(?)a+1,(a+2)(?)共53张例voidmain(){inta[]={5,8,7,6,2,7,3};inty,p=&a[1];y=(--p)++;printf(“%d”,y);printf(“%d”,a[0]);}输出:56pp58762730123456a例注意指针变量的运算6共53张main(){inti,p,a[7];p=a;for(i=0;i<7;i++)scanf("%d",p++);printf("\n");for(i=0;i<7;i++,p++)printf("%d",p);}例注意指针的当前值p=a;pp58762730123456apppppp指针变量可以指到数组后的内存单元共53张数组名作函数参数数组名作函数参数,是地址传递数组名作函数参数,实参与形参的对应关系实参形参数组名指针变量数组名指针变量数组名数组名指针变量指针变量共53张例将数组a中的n个整数按相反顺序存放ij379110675420123456789ijijijji11760594723实参与形参均用数组voidinv(intx[],intn){intt,i,j,m=(n-1)/2;for(i=0;i<=m;i++){j=n-1-i; t=x[i];x[i]=x[j];x[j]=t;}}main(){inti,a[10]={3,7,9,11,0,6,7,5,4,2};inv(a,10);printf("Thearrayhasbeenreverted:\n");for(i=0;i<10;i++)printf("%d,",a[i]);printf("\n");}m=4
献花(0)
+1
(本文系信检彭博海...首藏)