C++指针的运用-文档资料_第1页
C++指针的运用-文档资料_第2页
C++指针的运用-文档资料_第3页
C++指针的运用-文档资料_第4页
C++指针的运用-文档资料_第5页
已阅读5页,还剩46页未读 继续免费阅读

下载本文档

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

文档简介

1、2022-3-71第5章 指针的应用5.1、指针概述指针概述一、内存地址的概念一、内存地址的概念地址编码的基本单位是字节,每个字节是一地址编码的基本单位是字节,每个字节是一个基本内存单元。个基本内存单元。 二、二、从内存单元中存取数据的从内存单元中存取数据的 方法方法1 1、通过变量名,称为直接访问方式,直接对、通过变量名,称为直接访问方式,直接对变量的存储单元进行存取访问。在变量获得内存变量的存储单元进行存取访问。在变量获得内存空间的同时,变量名也就成为了相应内存空间的空间的同时,变量名也就成为了相应内存空间的名称,在变量的整个生存期内都可以用这个名字名称,在变量的整个生存期内都可以用这个名

2、字访问该内存空间,表现在程序语句中就是通过变访问该内存空间,表现在程序语句中就是通过变量名存取变量内容。量名存取变量内容。 2022-3-722 2、通过地址,称为间接访问方式,先找到存、通过地址,称为间接访问方式,先找到存放变量的地址的变量,得到变量的地址,再根据放变量的地址的变量,得到变量的地址,再根据变量的地址找到变量的存储单元,对它进行存取变量的地址找到变量的存储单元,对它进行存取访问。访问。C+C+拥有在运行时获得变量的地址和操纵地址拥有在运行时获得变量的地址和操纵地址的能力。变量的地址可以使用地址运算符的能力。变量的地址可以使用地址运算符& &求得,求得,在某一变量

3、前加上地址运算符在某一变量前加上地址运算符& &,则为该变量的,则为该变量的地址,如:地址,如:&x&x表示变量表示变量x x的地址的地址数组名表示数组的首地址;函数的地址用函数组名表示数组的首地址;函数的地址用函数名表示。数名表示。用来存放地址的变量就叫做指针型变量,简用来存放地址的变量就叫做指针型变量,简称指针。称指针。 2022-3-73假设假设ptrptr为一指针,则语句:为一指针,则语句:ptr=&x;ptr=&x;就将变量就将变量x x的地址存入了指针的地址存入了指针ptrptr中。中。也经常简称为也经常简称为“指针指针ptrptr指

4、向变量指向变量x x”。可以通过指针得到变量可以通过指针得到变量x x的值或改变变量的值或改变变量x x的值:的值:* *ptr=2;ptr=2;/相当于相当于 x=2x=2y=y=* *ptr;ptr;/将将x x的值赋给的值赋给y y2022-3-74例例5.15.1、阅读如下程序:阅读如下程序:源程序清单:源程序清单:#include#includeusing namespace std;using namespace std;void main( )void main( ) int a;int a; int int * *p;p;a=10;a=10;p=&a;p=&a;

5、coutacouta的值表示方法的值表示方法1 1:aendl;aendl;coutacouta的值表示方法的值表示方法2 2:* *pendl;pendl;coutacouta的地址表示方法的地址表示方法1 1:&aendl;&aendl;coutacouta的地址表示方法的地址表示方法2 2:pendl;pendl; 2022-3-755.2、指针变量的定义、赋值及使用指针变量的定义、赋值及使用一、一、指针变量的定义指针变量的定义指针本身也是一种变量,须先声明后使用。指针本身也是一种变量,须先声明后使用。声明指针类型的变量是在声明变量的同时加声明指针类型的变量是在声明变量的

6、同时加上上* *来完成的。对应于各种类型的数据都有相应来完成的。对应于各种类型的数据都有相应的指针类型。的指针类型。* *放在指针定义中时,被称为放在指针定义中时,被称为指针定义符指针定义符。放在可执行语句中的指针前被称为放在可执行语句中的指针前被称为指针运算指针运算符符,也称为,也称为“间接访问间接访问”运算符。运算符。2022-3-76指针变量的声明语句,由数据类型后跟星号,指针变量的声明语句,由数据类型后跟星号,再跟随指针变量名组成。再跟随指针变量名组成。数据类型数据类型 * *指针变量名;指针变量名;如如: :intint* * iptr; iptr;int int * *iptr;i

7、ptr;int int * * iptr; iptr;intint* *iptr;iptr;在指针定义中,一个在指针定义中,一个* *只能表示一个指针。只能表示一个指针。int int * * iptr1,iptr2; iptr1,iptr2;/iptr1/iptr1指针变量,指针变量,iptr2iptr2整型变量整型变量int int * * iptr1, iptr1, * * iptr2; iptr2; /两个指针变量两个指针变量2022-3-77地址和指针的关系地址和指针的关系int xint x,* *ptr ;ptr ;x=3x=3; ptr=&x ; ptr=&x

8、; 如果如果ptrptr指向指向x x,那么,那么* *ptr ptr 的值为的值为x x的值,以的值,以后对后对* *ptrptr的赋值等价于对的赋值等价于对x x的赋值。的赋值。#include #include using namespace std;using namespace std;void main( )void main( ) int x=3,int x=3,* *ptr ;ptr ;ptr=&x ; ptr=&x ; * *ptr=11;ptr=11;coutxendl;coutxendl;/x=11/x=11 2022-3-78二、二、指针变量的赋值指针变

9、量的赋值与变量定义一样,定义好指针变量后也可以与变量定义一样,定义好指针变量后也可以对它进行初始化,指针变量可以初始化为对它进行初始化,指针变量可以初始化为0、NULL或一个地址。数值为或一个地址。数值为0或者或者NULL的指针不的指针不指任何内容。数值指任何内容。数值0是可以直接赋给指针变量的是可以直接赋给指针变量的唯一整数值。唯一整数值。 1.1.在定义指针变量的同时进行初始化赋值,一般在定义指针变量的同时进行初始化赋值,一般格式如下:格式如下: 数据类型数据类型 * *指针名初始地址;指针名初始地址; 2022-3-792.2.定义指针变量后,用赋值语句将其初始化。定义指针变量后,用赋值

10、语句将其初始化。指针变量名指针变量名= =地址;地址; 可以是变量的地址、数组名、函数名等。可以是变量的地址、数组名、函数名等。用变量地址作为初值时,该变量的定义必须用变量地址作为初值时,该变量的定义必须在指针初始化之前定义。在指针初始化之前定义。 不能把常量或表达式的地址赋给指针变量。不能把常量或表达式的地址赋给指针变量。 不能将一个非不能将一个非0 0整数直接赋给指针变量,但可整数直接赋给指针变量,但可以赋整数值以赋整数值0 0,表示该指针为空指针。,表示该指针为空指针。例如:例如:int int * *p; p=0;p; p=0; p p为空指针,不指向任何地址。为空指针,不指向任何地址

11、。 2022-3-7103.3.允许声明指向允许声明指向 void void 类型的指针,该指针可以类型的指针,该指针可以被赋予任何类型对象的地址。被赋予任何类型对象的地址。 例如:例如: void void * *general; general; int int * *point;point; int i; int i; general=&i; general=&i; point=( int point=( int * *) general;) general;2022-3-711例例5.25.2、阅读如下程序:、阅读如下程序:源程序清单:源程序清单:#include#in

12、cludeusing namespace std;using namespace std;void main( )void main( ) int x;int x;int int * *p;p;int int * *q;q; int a=3; int a=3; int int * *pa=&a; pa=&a; p=&x ;p=&x ; q=p;q=p; coutcout* *paendl;paendl; 2022-3-712#include #include using namespace std;using namespace std;void main()v

13、oid main() int x=3,int x=3,* *ptr=&x;ptr=&x;* *ptr=52;ptr=52;coutxendl;coutxendl;/52/52coutcout* *ptrendl;/52ptrendl;/52coutptrendl;coutptrendl;/变量变量x x的地址的地址cout&xendl;cout&xendl; /变量变量x x的地址的地址 2022-3-713三、三、指针变量的使用指针变量的使用例例5.35.3、阅读如下程序:、阅读如下程序:源程序清单:源程序清单:#include#includeusing na

14、mespace std;using namespace std;void main( )void main( ) int x,int x,* *p;p; p=&x ;p=&x ; cincin* *p;p; coutcout* *pendl;pendl; 2022-3-714指针在使用前要进行初始化或赋值,指针未指针在使用前要进行初始化或赋值,指针未赋值将非常危险。赋值将非常危险。#include #include using namespace std;using namespace std;void main()void main() int x=26int x=26;in

15、t int * *ptr;ptr;* *ptr=58;ptr=58; /此时此时ptrptr是一个随机地址是一个随机地址coutxendl;coutxendl; 很可能已经破坏了另一变量的值,甚至修改很可能已经破坏了另一变量的值,甚至修改了函数的返回地址等。了函数的返回地址等。2022-3-7155.3、简单变量与指针、简单变量与指针指针的类型是它所指向变量的类型。指针值不是指针的类型是它所指向变量的类型。指针值不是整型数,在使用中必须类型匹配。如:整型数,在使用中必须类型匹配。如:int x=26int x=26;int int * *ptr=&x;ptr=&x; /定义指针

16、变量定义指针变量* *ptr=&x;ptr=&x; /error:/error:不能将整型地址转换成整型数不能将整型地址转换成整型数* *ptr=50;ptr=50; /执行语句:执行语句:* *在此处作间接引用在此处作间接引用可以对不同的类型作强制转换,如:可以对不同的类型作强制转换,如:* *ptr=(int)&x;ptr=(int)&x;表示将变量表示将变量x x的地址值作为一个整型数赋给变的地址值作为一个整型数赋给变量量* *ptrptr,即变量,即变量x x。2022-3-716因为指针是有类型的,所以给指针赋值不但因为指针是有类型的,所以给指针赋值不

17、但要是一个地址,而且应该是一个与该指针类型相要是一个地址,而且应该是一个与该指针类型相符的变量的地址。或者说指针的类型是它所指向符的变量的地址。或者说指针的类型是它所指向变量的类型。变量的类型。float f=34.5,float f=34.5,* *fptr=&f;fptr=&f;/浮点指针浮点指针int int * * iptr=&f; iptr=&f;/error:/error:浮点变量地址赋给浮点变量地址赋给整型指针整型指针iptr=fptr;iptr=fptr;/error:/error:浮点指针赋给整型指针浮点指针赋给整型指针将一个指针赋值给另一个指

18、针,结果是两个将一个指针赋值给另一个指针,结果是两个指针指向一个相指针指向一个相 同的地址单元。同的地址单元。2022-3-717例例5.45.4、阅读如下程序:、阅读如下程序:源程序清单:源程序清单:#include#includeusing namespace std;using namespace std;void main( )void main( ) int x,int x,* *p;p; x=3; x=3; p=&x ; p=&x ; * *p=p=* *p+10; p+10; cout cout* *pendl;pendl; 2022-3-718例例5.55.5、

19、输入、输入a a和和b b两个整数,运用指针技术按先两个整数,运用指针技术按先大后小的顺序输出大后小的顺序输出a a和和b b。 源程序清单:源程序清单:#include #include #include #include using namespace std;using namespace std;void main(void)void main(void) /利用间接访问方式来操作利用间接访问方式来操作 2022-3-719int a,b;int a,b;int int * *p1=&a;p1=&a;int int * *p2=&b;p2=&b;cout

20、input a and b:endl;coutinput a and b:cin* *p1p1* *p2;p2;if(if(* *p1p1* *p2)p2) cout cout按先大后小的顺序输出的按先大后小的顺序输出的a a和和b b为为:* *p2setw(4)p2setw(4)* *p1endl;p1endl; else else cout cout按先大后小的顺序输出的按先大后小的顺序输出的a a和和b b为为:* *p1setw(4)p1setw(4)* *p2endl;p2endl; 2022-3-720指针变量的运算指针变量的运算指针的算术运算指针的算术运算指针加一,减一运算指针

21、加一,减一运算是指向下一个或前一个数据。是指向下一个或前一个数据。如:如:y=y=* *px+ px+ 相当于相当于y=y=* *(px+) /px(px+) /px为一指针为一指针指针与整数的加减运算指针与整数的加减运算指针指针 p p 加上或减去加上或减去 n n ,其意义是指针当前指,其意义是指针当前指向位置的前方或后方第向位置的前方或后方第 n n 个数据的地址。个数据的地址。这种运算的结果值取决于指针指向的数据类型。这种运算的结果值取决于指针指向的数据类型。2022-3-721pa-2pa-1pa+1pa+2pa+3*(pa-2)*pa*(pa+1)*(pa+2)*(pa+3)*(p

22、a-1)short *pa2022-3-722pb-1pbpb+1pb+2*(pb-1)*pb*(pb+1)*(pb+2)int *pb2022-3-723#include #include using namespace std; using namespace std; void main()void main() int n=20,int n=20,* *ptr=&n,ptr=&n,* *ptr1,y;ptr1,y;y=y=* *ptr;ptr;coutptr=ptrty=yendl;coutptr=ptrty=yendl;y=y=* *(ptr+);(ptr+);/y=

23、/y=* *(+ptr);(+ptr);coutptr=ptrty=yendl;coutptr=ptrty=yendl;ptr1=ptr+3;ptr1=ptr+3;y=y=* *ptr1;ptr1;coutptr=ptr1ty=yendl;coutptr=ptr1ty=yendl; 2022-3-724关系运算关系运算表示所指变量在内存中的位置关系表示所指变量在内存中的位置关系如:两个指针变量指向同一个数组中的元素如:两个指针变量指向同一个数组中的元素时,其关系运算的结果表明了这两个指针变量所时,其关系运算的结果表明了这两个指针变量所指向的数组元素的先后关系指向的数组元素的先后关系char a

24、10; char *p1,*p2; p1=a+2; p2=a+4; p1+;p2-;指针可以和零之间进行等于或不等于的关系运算。指针可以和零之间进行等于或不等于的关系运算。例如:例如:p=0;p=0;/表示空指针表示空指针 2022-3-725例例5.55.5、编写一交换两个整型变量值的函数,并、编写一交换两个整型变量值的函数,并写一主函数测试。写一主函数测试。#include#include using namespace std; using namespace std; void swap(intvoid swap(int* *x,intx,int* *y)y) int t;int t;

25、t=t=* *x,x,* *x=x=* *y,y,* *y=t;y=t; void main()void main() int a=1,b=2;int a=1,b=2;coutcout交换前交换前: a=a,b=bendl;: a=a,b=bendl;swap(&a,&b);swap(&a,&b);coutcout交换后交换后: a=a,b=bendl;: a=a,b=bendl; 2022-3-7265.4、一维数组与指针、一维数组与指针数组名可以拿来初始化指针,数组名就是数数组名可以拿来初始化指针,数组名就是数组第一个元素的地址,即对于数组组第一个元素的地址

26、,即对于数组a a,有,有a=&a0a=&a0。假设按下面定义数组假设按下面定义数组a a及指针及指针iptriptr:int a10, int a10, * *iptr=a;iptr=a;对第对第i i个元素可表示成以下四种:个元素可表示成以下四种:ai ai 、* *(a+i) (a+i) 、iptri iptri 、* *(iptr+i)(iptr+i)这四个等价关系使得数组与指针相互转换非常灵这四个等价关系使得数组与指针相互转换非常灵活。活。2022-3-727与上面相对应的有下面四个地址等价关系:与上面相对应的有下面四个地址等价关系:&ai &ai a

27、+i a+i iptr+i iptr+i &iptri&iptria+ia+i表示第表示第i i个数组元素的地址,个数组元素的地址,iptr+iiptr+i也同也同样是指向数组样是指向数组a a的第的第i i个数组元素。个数组元素。相互等价相互等价2022-3-728例例5.65.6、求数组元素的和、求数组元素的和#include#includeusing namespace std; using namespace std; int sum1,sum2,sum3,sum4,sum5,int sum1,sum2,sum3,sum4,sum5,* *iPtr;iPtr;int i

28、Array =1,4,2,7,13,32,21,48,16,30;int iArray =1,4,2,7,13,32,21,48,16,30;void main()void main() int size,n;int size,n; size=sizeof(iArray)/sizeof( size=sizeof(iArray)/sizeof(* *iArray);iArray);/ sizeof(iArray)/ sizeof(iArray):数组:数组iArrayiArray所占字节数所占字节数/ sizeof(/ sizeof(* *iArray)iArray):数组元素类型所占字节数:数

29、组元素类型所占字节数 for(n=0;nsize;n+) sum1+=iArrayn;for(n=0;nsize;n+) sum1+=iArrayn;/方法方法1 12022-3-729iPtr=iArray;iPtr=iArray;/方法方法2 2for(n=0;nsize;n+) sum2+=for(n=0;nsize;n+) sum2+=* *iPtr+; iPtr+; iPtr=iArray; iPtr=iArray; /方法方法3 3for(n=0;nsize;n+) sum3+=for(n=0;nsize;n+) sum3+=* *(iPtr+n); (iPtr+n); iPtr=

30、iArray; iPtr=iArray; /方法方法4 4for(n=0;nsize;n+) sum4+=iPtrn; for(n=0;nsize;n+) sum4+=iPtrn; /方法方法5 5for(n=0;nsize;n+) sum5+=for(n=0;nsize;n+) sum5+=* *(iArray+n); (iArray+n); coutsum1=sum1,sum2=sum2coutsum1=sum1,sum2=sum2,sum3=sum3,sum4=sum4,sum3=sum3,sum4=sum4,sum5=sum5endl;,sum5=sum5endl; 2022-3-73

31、0例例5.75.7、阅读如下程序:、阅读如下程序:源程序清单:源程序清单:#include #include using namespace std;using namespace std;void main( )void main( ) char a10=abcdefghi; char a10=abcdefghi; char char * *p1,p1,* *p2; p2; p1=a; p1=a; p1+=2; p1+=2;2022-3-731 p2=a+4; /p2=a+4; /指针变量指针变量p2p2,直接由数组名加上,直接由数组名加上4 4,指向数组的第五个数组元素的内存单元指向数组的

32、第五个数组元素的内存单元 if(p1p2)coutp1if(p1p2)coutp1所指向的数组元素在所指向的数组元素在p2p2所指所指向的数组元素前面!向的数组元素前面!endl; endl; else coutp1 else coutp1所指向的数组元素在所指向的数组元素在p2p2所指向的所指向的数组元素后面!数组元素后面!endl; endl; p1+; p1+; p2-; p2-; if(p1=p2)coutp1 if(p1=p2)coutp1和和p2p2同时指向数组中的同同时指向数组中的同一个元素且元素值为:一个元素且元素值为:* *p1endl;p1endl; else coutp1

33、 else coutp1和和p2p2没有指向数组中的同一个没有指向数组中的同一个元素!元素!endl;endl; 2022-3-732例例5.85.8、利用指针技术,将键盘输入的、利用指针技术,将键盘输入的N个整数个整数按相反的顺序存放并输出。按相反的顺序存放并输出。思路分析:思路分析:分别取出数组最前面和最后面的元素,进行分别取出数组最前面和最后面的元素,进行交换,即交换,即a0与与aN-1交换;然后再分别取出交换;然后再分别取出a1与与aN-2交换;直到交换完毕。交换;直到交换完毕。 2022-3-733源程序清单:源程序清单:#include #include #include #inc

34、lude using namespace std;using namespace std;int main(void)int main(void) int a10,i,j,temp,int a10,i,j,temp,* *p; p; coutInput ten interger:endl;coutInput ten interger:endl; for(p=a;pa+10;p+)for(p=a;pcin* *p;p;p=a;p=a;2022-3-734 for(i=0,j=10-1;ij;i+,j-)for(i=0,j=10-1;ij;i+,j-) temp= temp=* *(p+i);(p

35、+i); * *(p+i)=(p+i)=* *(p+j);(p+j); * *(p+j)=temp;(p+j)=temp; for(p=a;pa+10;p+)for(p=a;pa+10;p+) coutsetw(4) coutsetw(4)* *p;p; coutendl; coutendl; return 0; return 0; 2022-3-735例例5.95.9、把一个整数插入到一个由小到大的有序、把一个整数插入到一个由小到大的有序整数序列中,并仍然保持由小到大的顺序。整数序列中,并仍然保持由小到大的顺序。设有设有1010个整数按由小到大的顺序存放在数组个整数按由小到大的顺序存放在数组

36、a a中,待插入的数放在变量中,待插入的数放在变量x x中。中。#include#include#include #include using namespace std; using namespace std; void main(void)void main(void) const int N=10;const int N=10;int aN+1,p,x,int aN+1,p,x,* *t;t;2022-3-736coutcout输入输入a a数组:数组:endl;endl;for(t=a;ta+N;t+)for(t=a;tcin* *t;t;coutcout输入待插入的数输入待插入的数

37、x x:endl;x;cinx;t=a;p=0; t=a;p=0; while (xwhile (x* *(t+p)&pN)(t+p)&p=a+p;t-)for (t=a+N-1;t=a+p;t-) * *(t+1)=(t+1)=* *t;t;t=a+p;t=a+p; * *t=x;t=x;for (t=a;t=a+N;t+)for (t=a;t=a+N;t+) coutsetw(3)coutsetw(3)* *t;t;coutendl;coutendl; 2022-3-737例例5.105.10、从键盘输入整数集合、从键盘输入整数集合a a、b b的元素个数和的元素个数和各个

38、元素的值(不相同),计算并输出其交集。各个元素的值(不相同),计算并输出其交集。#include #include using namespace std; using namespace std; #include #include void main(void)void main(void) const int M=20,N=10;const int M=20,N=10;int aM,bN,cM;int aM,bN,cM;int d,e,f=0,int d,e,f=0,* *pa,pa,* *pb,pb,* *pc;pc;2022-3-738coutcout输入数组输入数组a a中元素的个

39、数:中元素的个数:endl;d; cind; coutcout输入数组输入数组a a的的dd个元素:个元素:endl;endl;for(pa=a;paa+d;pa+)for(pa=a;pacin* *pa;pa;coutcout输入数组输入数组b b中元素的个数:中元素的个数:endl;e;cine;coutcout输入数组输入数组b b的的ee个元素:个元素:endl;endl;for(pb=b;pbb+e;pb+)for(pb=b;pbcin* *pb;pb;2022-3-739for(pa=a,pc=c;paa+d;pa+)for(pa=a,pc=c;paa+d;pa+) for(pb=

40、b;pbb+e;pb+) for(pb=b;pbb+e;pb+) if(if(* *pa=pa=* *pb)pb) * *pc+=pc+=* *pa;pa;f+;f+; break;break;coutcout交集交集c c的各个元素依次为的各个元素依次为:endl;:endl;for(pc=c;pcc+f;pc+)for(pc=c;pcc+f;pc+)coutsetw(3)coutsetw(3)* *pc;pc;coutendl;coutendl; 2022-3-740例例5.115.11、从键盘输入整数集合、从键盘输入整数集合a a、b b的元素个数和的元素个数和各个元素的值(不相同)各个

41、元素的值(不相同) ,计算并输出其并集。,计算并输出其并集。#include #include using namespace std; using namespace std; #include #include void main(void)void main(void) const int M=20,N=10;const int M=20,N=10;int aM,bN,cM+N;int aM,bN,cM+N;int d,e,f=0,int d,e,f=0,* *pa,pa,* *pb,pb,* *pc;pc;2022-3-741coutcout输入数组输入数组a a中元素的个数:中元素的

42、个数:endl;d; cind; coutcout输入数组输入数组a a的的dd个元素:个元素:endl;endl;for(pa=a;paa+d;pa+)for(pa=a;pacin* *pa;pa;coutcout输入数组输入数组b b中元素的个数:中元素的个数:endl;e;cine;coutcout输入数组输入数组b b的的ee个元素:个元素:endl;endl;for(pb=b;pbb+e;pb+)for(pb=b;pbcin* *pb;pb;2022-3-742for(pa=a,pc=c;paa+d;pa+,pc+)for(pa=a,pc=c;paa+d;pa+,pc+) * *pc

43、=pc=* *pa; f+;pa; f+;for(pb=b;pbb+e;pb+)for(pb=b;pbb+e;pb+) for(pa=a;paa+d;pa+)for(pa=a;pa=a+d)if(pa=a+d) * *pc+=pc+=* *pb; f+;pb; f+; coutcout“并集并集c c的各个元素依次为的各个元素依次为:endl;:endl;for (pc=c;pcc+f;pc+)for (pc=c;pcc+f;pc+)coutsetw(3)coutsetw(3)* *pc;pc;coutendl;coutendl; 2022-3-743例例5.125.12、编程实现将一个数组中

44、的数据按相反顺、编程实现将一个数组中的数据按相反顺序存放。序存放。思路分析:用一个子函数实现按相反顺序存放,思路分析:用一个子函数实现按相反顺序存放,主函数调用该子函数实现按相反顺序存放。主函数调用该子函数实现按相反顺序存放。#include #include using namespace std;using namespace std;void invert(int void invert(int * *p,int n)p,int n) int i,j,temp; int i,j,temp; for(i=0,j=n-1;ij;i+,j-) for(i=0,j=n-1;ij;i+,j-) t

45、emp=temp=* *(p+i);(p+i); * *(p+i)=(p+i)=* *(p+j);(p+j); * *(p+j)=temp;(p+j)=temp; 2022-3-744int main(void)int main(void) int a10,i; int a10,i; coutInput ten interger:endl; coutInput ten interger:endl; for(i=0;i10;i+) for(i=0;iai; cinai; invert(a,10); invert(a,10); for(i=0;i10;i+) for(i=0;i10;i+) coutaiendl; coutaiendl; return 0; return 0; 2022-3-7455.5、二维数组与指针、二维数组与指针例例5.135

温馨提示

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

评论

0/150

提交评论