善于利用指针1课件.pptx

上传人:牧羊曲112 文档编号:1329390 上传时间:2022-11-09 格式:PPTX 页数:61 大小:433.50KB
返回 下载 相关 举报
善于利用指针1课件.pptx_第1页
第1页 / 共61页
善于利用指针1课件.pptx_第2页
第2页 / 共61页
善于利用指针1课件.pptx_第3页
第3页 / 共61页
善于利用指针1课件.pptx_第4页
第4页 / 共61页
善于利用指针1课件.pptx_第5页
第5页 / 共61页
点击查看更多>>
资源描述

《善于利用指针1课件.pptx》由会员分享,可在线阅读,更多相关《善于利用指针1课件.pptx(61页珍藏版)》请在三一办公上搜索。

1、C语言程序设计,Soochow University,1,主要内容,地址和指针的概念变量的指针和指向变量的指针变量数组的指针和指向数组的指针变量字符串的指针和指向字符串的指针变量函数的指针和指向函数的指针变量返回指针值的函数指针数组和指向指针的指针有关指针的数据类型和指针运算的小结习题,C语言程序设计Soochow University1主要内,C语言程序设计,Soochow University,2,8.1 指针是什么,C语言程序设计Soochow University28.1,C语言程序设计,Soochow University,3,地址和指针的概念,变量定义时的内存分配如果在程序中定义了

2、一个变量,在编译时就给这个变量分配内存单元。系统根据程序中定义的变量类型,分配一定长度的空间。内存单元的地址和内存单元的内容这两个概念的区别内存区的每一个字节有一个编号,这就是“地址”,它相当于旅馆中的房间号。在地址所标志的内存单元中存放数据,这相当于旅馆中各个房间中居住旅客一样。,C语言程序设计Soochow University3地址和,C语言程序设计,Soochow University,4,地址和指针的概念,变量的“直接访问”方式通过变量名来访问在程序中一般是通过变量名来对内存单元进行存取操作的。其实程序经过编译以后己经将变量名转换为变量的地址,对变量值的存取都是通过地址进行的。变量的

3、“间接访问”方式保存变量地址的变量:i_pointer=这时,i_pointer的值就是2000,即变量i所占用单元的起始地址。变量的“间接访问”过程:先找到存放“i的地址”的变量,即i_pointer,从中取出i的地址(2000),然后到2000、2001字节取出i的值(3)。,C语言程序设计Soochow University4地址和,C语言程序设计,Soochow University,5,地址和指针的概念,“直接访问”和“间接访问”方式下变量的存储过程为了表示将数值3送到变量中,可以有两种表达方法:(1) 将3送到变量i所标志的单元中。(2) 将3送到变量i_pointer所“指向”的

4、单元(即i所标志的单元)中。见上图。所谓“指向”就是通过地址来体现的。“指针”和“指针变量”一个变量的地址称为该变量的“指针”。如果有一个变量专门用来存放另一变量的地址(即指针),则它称为“指针变量”。指针变量的值(即指针变量中存放的值)是指针(地址)。请区分“指针”和“指针变量”这两个概念。,C语言程序设计Soochow University5地址和,C语言程序设计,Soochow University,6,8.2 指针变量,C语言程序设计Soochow University68.2,C语言程序设计,Soochow University,7,定义一个指针变量,指针变量也必须先定义后使用定义指

5、针变量的一般形式:基类型 *指针变量名指针变量的基类型:用来指定该指针变量可以指向的变量的类型。指针变量只能用来指向和其基类型相同类型的变量,如基类型为int的指针变量只能用来指向整型变量,绝对不能指向实型变量。int*pointer_1,*pointer_2, a;用赋值语句可使一个指针变量指向另一个变量,C语言程序设计Soochow University7定义一,C语言程序设计,Soochow University,8,在定义指针变量时要注意两点,(1) 指针变量前面的“*”,表示该变量的类型为指针型变量。注意:指针变量名是pointer_1、pointer_2,而不是*pointer_1

6、、*pointer_2。(2) 在定义指针变量时必须指定基类型。例如只有整型变量的地址才能放到指向整型变量的指针变量中。,C语言程序设计Soochow University8在定义,C语言程序设计,Soochow University,9,指针变量的引用,指针变量中只能存放地址(指针),不要随便将一个整型常量(或任何其他非地址类型的数据)赋给一个指针变量。两个有关的运算符(1) ,注意:规则修改:指针必须先定义并且初始化后,才可以使用,C语言程序设计Soochow University9指针变,C语言程序设计,Soochow University,10,指针变量的引用程序举例,例:通过指针变量

7、访问整型变量。main( ) int a,B, *pointer_1, *pointer_2; /*这里出现*表示指针定义*/ a=100;B=10; /*把变量a的地址赋给pointer_1,不是*pointer_1= ,运行结果为:100,10100,10,C语言程序设计Soochow University10指针,C语言程序设计,Soochow University,11,对“&”和“*”运算符的深入说明,(1) 如果已执行了“pointer_1=”语句,若有&*pointer_1它的含义是什么?&*pointer_1相当于&apointer_2 = &*pointer_1pointer

8、_2 = pointer_1,C语言程序设计Soochow University11对“,C语言程序设计,Soochow University,12,(2) *&a的含义是什么?与a等价; *&a和*pointer_1的作用是一样的(假设已执行了“pointer_1=&a”),它们等价于变量a。即*&a与a等价,见图(3) (*pointer_1)+相当于a+。注意括号是必要的,如果没有括号,就成为了*pointer_1+,+和*为同一优先级别,相当于先做*pointer_1,然后做pointer_1+,对“&”和“*”运算符的深入说明,C语言程序设计Soochow University12(

9、2,C语言程序设计,Soochow University,13,例: 输入a和B两个整数,按先大后小的顺序输出a和B。,main()int *p1,*p2,*p, a, B;scanf ( %d,%d, ,运行情况如下:5,9a=5,B=9max=9,min=5 当输入a=5,B=9时,由于aB,将p1和p2交换。交换前的情况见图 (a),交换后见图(b)。,结论:在使用指针时,我们要清楚操作的是指针本身,还是指针所指向的变量,C语言程序设计Soochow University13例:,C语言程序设计,Soochow University,14,函数的参数回顾,形式参数和实际参数二者具有各自独

10、立的内存空间C语言中函数参数传值是单向的实际参数 形式参数例如:,void swap(int n1,int n2) int temp; if (n1 n2) temp = n1; n1 = n2; n2 = temp;,输入: 9 5,输出: a=9; b=5,输出: a=9; b=5,C语言程序设计Soochow University14函数,C语言程序设计,Soochow University,15,函数的参数回顾,函数的调用过程首先把a、b的值复制到swap函数的堆栈区间,并赋值给行参n1、n2.交换n1、n2的值。返回。,结果被调函数进行的操作结果无法反应在主调函数中。用传地址的形式,

11、C语言程序设计Soochow University15函数,C语言程序设计,Soochow University,16,指针作为函数参数,指针作为函数参数将一个变量的地址传到另一个函数中。例如:,void swapp(int *n1,int *n2) int temp; if (*n1 *n2) temp = *n1; *n1 = *n2; *n2 = temp;,输入: 9 5,输出: a=9; b=5,输出: a=5; b=9,C语言程序设计Soochow University16指针,C语言程序设计,Soochow University,17,指针作为函数参数,函数的调用过程首先把a、b

12、的地址值复制到swapp函数的堆栈区间,并赋值给行参n1、n2.交换n1、n2所指向内存单元的值。返回。,结果被调函数进行的操作结果反应在主调函数中。被调函数实际上是在主调函数的堆栈区间中进行的操作实际是一种地址传递方式,C语言程序设计Soochow University17指针,C语言程序设计,Soochow University,18,指针作为函数参数,指针变量作为函数参数典型错误举例一swap(int *n1,int *n2) int*temp;*temp=*n1; *n1=*n2; *n2=*temp;问题:temp没有初始化,指向的内存单元是不确定的对没有初始化的指针赋值非常危险!,

13、/*此语句有问题*/,C语言程序设计Soochow University18指针,C语言程序设计,Soochow University,19,指针作为函数参数,指针变量作为函数参数典型错误举例二swap(int *n1,int *n2) int*p; p=n1;n1=n2;n2=p;,问题交换的只是两个形参所指向的内存单元。,C语言程序设计Soochow University19指针,C语言程序设计,Soochow University,20,指针变量作为函数参数,C语言中实参变量和形参变量之间的数据传递是单向的“值传递”方式。指针变量作函数参数也要遵循这一规则,这时的值是指针的值,也就是地址

14、值。调用函数不可能改变实参指针变量的值,但可以改变实参指针变量所指变量的值。运用指针变量作参数,可以从函数调用中得到多个变化了的值。如果不用指针变量是难以做到这一点的。参考下例:,C语言程序设计Soochow University20指针,C语言程序设计,Soochow University,21,指针作函数参数的实例,main() int a,B,C,*p1,*p2,*p3;scanf(%d,%d,%d,,swap(int *pt1, int *pt2) int temp; temp=*pt1; *pt1=*pt2; *pt2=temp;,exchange(int *q1, int *q2,

15、 int *q3) if(*q1*q2) swap(q1,q2); if(*q1*q3) swap(q1,q3); if(*q2*q3) swap(q2,q3);,运行情况如下: 9,0,10 10,9,0,C语言程序设计Soochow University21指针,指针举例,编写一个函数,实现将大写字母转换从小写字母,小写字母转换成大写字母。在main函数中测试该函数的正确性。,C语言程序设计,Soochow University,22,指针举例编写一个函数,实现将大写字母转换从小写字母,小写字母,C语言程序设计,Soochow University,23,8.3 通过指针引用数组,C语言程

16、序设计Soochow University238.,C语言程序设计,Soochow University,24,数组的指针和指向数组的指针变量,数组的指针是指数组的起始地址数组元素的指针是数组元素的地址。指向数组元素的指针定义一个指向数组元素的指针变量的方法,与以前介绍的指向变量的指针变量相同。例如:int a10; int *p; p=,C语言程序设计Soochow University24数组,C语言程序设计,Soochow University,25,指向数组元素的指针,C语言规定数组名代表数组的首地址,也就是第0号元素的地址。下面语句等价:p=”的作用是“把a数组的首地址赋给指针变量p

17、”,而不是“把数组a各元素的值赋给p”。,C语言程序设计Soochow University25指向,C语言程序设计,Soochow University,26,通过指针引用数组元素,通过指针对数组元素赋值,如:*p=1;如果指针变量p已指向数组中的一个元素,则p+1指向同一数组中的下一个元素(而不是将p值简单地加1)。,C语言程序设计Soochow University26通过,C语言程序设计,Soochow University,27,数组元素指针使用的进一步理解,如果p的初值为&a0,则:(1) p+i和a+i就是ai的地址(2) *(p+i)或*(a+i)是p+i或a+i所指向的数组元

18、素,即ai。例如,*(p+5)或*(a+5)就是a5。(3) 指向数组的指针变量也可以带下标,如pi与*(p+i)等价数组元素引用的两种方法:(1) 下标法,如ai或pi形式,p是指向数组的指针变量,其初值p=a。(2) 指针法,如*(a+i)或*(p+i)。其中a是数组名,p是指向数组的指针变量,其初值p=a。,C语言程序设计Soochow University27数组,C语言程序设计,Soochow University,28,数组元素指针使用例子,例: 输出数组中的全部元素。假设有一个整型数组a,有10个元素。要输出各元素的值有三种方法:,(1) 下标法。main( )int a10;

19、inti; for(i=0;i10;i+) scanf(%d,,(2)数组名方法main( )int a10; inti; for(i=0;i10;i+) scanf(%d,,(3)指针方法main( )int a10; inti; int *p;for(i=0;i10;i+) scanf(“%d”,p+i);printf(n);for(p=a;p(a+10);p+) printf(%d ,*p);,C语言程序设计Soochow University28数组,C语言程序设计,Soochow University,29,数组元素的指针变量使用过程中的注意事项,(1) 指针变量可以实现使本身的值改

20、变,数组名是否也可以?例如,上述第(3)种方法是用指针变量p来指向元素,用p+使p的值不断改变,这是合法的。如果不用p而使a变化(例如,用a+)行不行呢?答案是不行的,因为a是数组首地址,这个地址在编译期就定下来了,在程序运行过程中始终会保持不变。程序中如果出现a+,编译器在编译的时候就会报错。(2) 要注意指针变量的当前值。(3) 注意数组下标越界问题 (4) 注意指针变量的运算(见P236),C语言程序设计Soochow University29数组,C语言程序设计,Soochow University,30,例:通过指针变量输出a数组的10个元素请检查以下程序的正确性:main( ) i

21、nt*p,i,a10; p=a; for(i=0;i10;i+)scanf(%d”, p+); printf(n); for(i=0;i10;i+,p+)printf(“%d”, *p);,p=a;,数组元素的指针变量使用过程中的注意事项,C语言程序设计Soochow University30例:,C语言程序设计,Soochow University,31,用数组名作函数参数,数组名可以用作函数的形参和实参。如:main( ) f(int arr ,int n) int array10; f(array,10); 当用数组名作参数时,如果形参数组中各元素的值发生变化,实参数组元素的值随之变化。

22、实参数组名代表该数组首地址,而形参是用来接收从实参传递过来的数组首地址的。因此,形参应该是一个指针变量。实际上,C编译都是将形参数组作为指针变量来处理的。f(int arr , int n)实际上相当于f(int *arr, int n),C语言程序设计Soochow University31用数,C语言程序设计,Soochow University,32,实参数组名和形参数组名的区别:,实参数组名代表一个固定的地址,或者说是指针型常量,而形参数组并不是一个固定的地址值。如: f(int arr , int n)printf(%dn, *arr); /*输出array0的值,*/arr=arr

23、+3;printf(%dn, *arr); /*输出array3的值,*/,C语言程序设计Soochow University32实参,C语言程序设计,Soochow University,33,用数组名作函数参数举例,例:设计一个函数将数组a中n个整数按相反顺序存放,见下图示意。解此题的算法为:将a0与an-1对换,再将a1与an-2对,直到将下图中的a(n-1)/2与 an-int(n-1)/2)-1对换。程序:,C语言程序设计Soochow University33用数,C语言程序设计,Soochow University,34,重要归纳,归纳起来,如果有一个实参数组,想在函数中改变此数

24、组的元素的值,实参与形参的表示形式有以下4种情况:(1) 形参和实参都用数组名,如:main( ) f(int x ,int n) int a10; f(a,10); 可以认为有一形参数组,与实参数组共用一段内存单元。,C语言程序设计Soochow University34重要,C语言程序设计,Soochow University,35,重要归纳,(2) 实参用数组名,形参用指针变量。如:main( ) f(int *x,int n) int a10; f(a,10); 实参a为数组名,形参x为指向整型变量的指针变量,函数开始执行时,x指向a0,即x=&a0。通过x值的改变,可以指向a数组的任

25、一元素。,C语言程序设计Soochow University35重要,C语言程序设计,Soochow University,36,重要归纳,(3) 实参形参都用指针变量。例如:main( ) f(int *x,int n) int a10, *p; p=a; f(p,10); 实参p和形参x都是指针变量。先使实参指针变量p指向数组a,p的值是&a0。然后将p的值传给形参指针变量x,x的初始值也是&a0 。通过x值的改变可以使x指向数组a的任一元素。,C语言程序设计Soochow University36重要,C语言程序设计,Soochow University,37,重要归纳,(4) 实参为指

26、针变量,形参为数组名。如:main() f(int x ,int n) int a10,*p; p=a; f(p,10); 实参p为指针变量,它使指针变量p指向a0,即p=a或p=&a0。形参为数组名x,从前面的介绍已知,实际上将x作为指针变量处理,今将a0的地址传给形参x,使指针变量x指向a0。也可以理解为形参数组x取得a数组的首地址,x数组和a数组共用同一段内存单元。,C语言程序设计Soochow University37重要,C语言程序设计,Soochow University,38,8.4 通过指针引用字符串,C语言程序设计Soochow University388.,C语言程序设计,

27、Soochow University,39,字符串的指针和指向字符串的指针变量,字符串的表示形式字符数组法:用字符数组存放一个字符串。例如:main( ) char string=IloveChina!; printf(%sn,string);,C语言程序设计Soochow University39字符,C语言程序设计,Soochow University,40,字符串的指针和指向字符串的指针变量,字符串的表示形式字符指针法 :用字符指针指向一个字符串。可以不定义字符数组,而定义一个字符指针。用字符指针指向字符串中的字符。例如:main( ) char*string=I love China!

28、;printf(%sn,string);C语言对字符串常量是按字符数组处理的,在内存开辟了一个字符数组用来存放字符串常量。程序在定义字符指针变量string时把字符串首地址(即存放字符串的字符数组的首地址)赋给string。,C语言程序设计Soochow University40字符,C语言程序设计,Soochow University,41,字符数组、字符串和字符指针的理解,字符数组存放字符数据的数组,没有字符串结束标志在定义时可以整体初始化,但不能在非定义时进行整体初始化字符串存放于字符数组中,必须有字符串结束标志字符串在内存占有的字节数为长度1在定义时可以整体初始化,但不能在非定义时进行

29、整体初始化字符指针可以指向字符数据的指针变量,可以指向字符数组,也可以指向字符串在定义时可以初始化,也可以在非定义时进行初始化必须先初始化,才可以使用字符串输出的理解:格式控制符“%s”,C语言程序设计Soochow University41字符,C语言程序设计,Soochow University,42,字符串指针作函数参数,使用字符指针变量和字符数组的比较(见P263)字符串指针作函数参数与指针变量作函数参数的语法规定完全相同。copy_string函数的几种形式(见P261)目的:深刻体会指针给C程序带来的好处简化程序的编写工作量,使得程序更简洁。指针给C程序带来的麻烦需要仔细控制指针的

30、使用降低了程序的可读性,C语言程序设计Soochow University42字符,字符指针应用举例,例如:编写一个函数,实现字符串str1与字符串str2的比较。编写一个函数,实现字符串str1与str2的拼接编写一个函数,求字符串str1的长度,C语言程序设计,Soochow University,43,字符指针应用举例例如:C语言程序设计Soochow Uni,动态内存分配与指向它的指针变量,动态内存分配与指向它的指针变量,动态内存分配,什么是内存的动态分配非静态的局部变量是分配在内存中的动态存储区的,这个存储区是一个称为栈的区域C语言还允许建立内存动态分配区域,以存放一些临时用的数据,

31、这些数据需要时随时开辟,不需要时随时释放。这些数据是临时存放在一个特别的自由存储区,称为堆区怎样建立内存的动态分配对内存的动态分配是通过系统提供的库函数来实现的,主要有malloc,calloc,free,realloc这4个函数以上4个函数的声明在stdlib.h头文件中,在用到这些函数时应当用“#include ”指令把stdlib.h头文件包含到程序文件中。,动态内存分配什么是内存的动态分配,怎样建立内存的动态分配,malloc函数其函数原型为 void *malloc(unsigned int size); 其作用是在内存的动态存储区中分配一个长度为size的连续空间函数的值(也就是函

32、数的返回值)是所分配区域的第一个字节的地址,或者说,此函数是一个指针型函数,返回的指针指向该分配域的开头位置,怎样建立内存的动态分配malloc函数,怎样建立内存的动态分配,malloc(100);开辟100字节的临时分配域,函数值为其第1个字节的地址 注意指针的基类型为void,即不指向任何类型的数据,只提供一个地址如果此函数未能成功地执行(例如内存空间不足),则返回空指针(NULL),怎样建立内存的动态分配 malloc(100);,怎样建立内存的动态分配,2calloc函数其函数原型为 void *calloc(unsigned n, unsigned size); 其作用是在内存的动态

33、存储区中分配n个长度为size的连续空间,这个空间一般比较大,足以保存一个数组。,怎样建立内存的动态分配2calloc函数,怎样建立内存的动态分配,用calloc函数可以为一维数组开辟动态存储空间,n为数组元素个数,每个元素长度为size。这就是动态数组。函数返回指向所分配域的起始位置的指针;如果分配不成功,返回NULL。如: p=(int *)calloc(50,4);开辟504个字节的临时分配域,把起始地址赋给指针变量p 等价于: p = (int*)malloc(50*4); 例如:分配包含20个元素的整型数组: p = (int*)calloc(20, sizeof(int); p =

34、 (int*)malloc(20*sizeof(int);,怎样建立内存的动态分配用calloc函数可以为一维数组开辟动,怎样建立内存的动态分配,sizeof()运算符计算数据类型在内存在占有的字节数例如:sizeof(char) : 1bytesizeof(int) : 2 or 4bytessizeof(double): 8bytes使用sizeof运算符可以提高程序的移植性。在动态内存分配中,要求大家使用该运算符计算数据类型在内存占有的字节数。,C语言程序设计,Soochow University,50,怎样建立内存的动态分配sizeof()运算符C语言程序设计,怎样建立内存的动态分配,

35、3free函数其函数原型为 void free(void *p); 其作用是释放指针变量所指向的动态空间,使这部分空间能重新被其他变量使用。p应是最近一次调用calloc或malloc函数时得到的函数返回值。free(p);释放指针变量所指向的已分配的动态空间 free函数无返回值,怎样建立内存的动态分配3free函数,怎样建立内存的动态分配,4. realloc函数其函数原型为void *realloc(void *p,unsigned int size);如果已经通过malloc函数或calloc函数获得了动态空间,想改变其大小,可以用recalloc函数重新分配。用realloc函数将p

36、所指向的动态空间的大小改变为size。p的值不变。如果重分配不成功,返回NULL,如:realloc(p,50); 将p所指向的已分配的动态空间改为50字节,怎样建立内存的动态分配4. realloc函数,void指针类型,例8.30 建立动态数组,输入5个学生的成绩,另外用一个函放数检查其中有无低于60分的,输出不合格的成绩。解题思路:用malloc函数开辟一个动态自由区域,用来存5个学生的成绩,会得到这个动态域第一个字节的地址,它的基类型是void型。用一个基类型为int的指针变量p来指向动态数组的各元素,并输出它们的值。但必须先把malloc函数返回的void指针转换为整型指针,然后赋给

37、p1,void指针类型 例8.30 建立动态数组,输入5个学生的,#include #include void check(int *); int main() int *p1,i; p1 = (int *)malloc(5*sizeof(int);,for(i=0;i5;i+) scanf(%d,p1+i); check(p1); free(p1); return 0;,#include for(i=0;i5;,void check(int *p) int i; printf(They are fail:); for(i=0;i5;i+) if (pi60) printf(“%d ”,pi)

38、; printf(n);,void check(int *p),指针小结,C语言程序设计,Soochow University,56,指针小结C语言程序设计Soochow University,有关指针的小结,1.首先要准确地弄清楚指针的含义。指针就是地址,凡是出现“指针”的地方,都可以用“地址”代替,例如,变量的指针就是变量的地址,指针变量就是地址变量要区别指针和指针变量。指针就是地址本身,而指针变量是用来存放地址的变量。2. 什么叫“指向”?地址就意味着指向,因为通过地址能找到具有该地址的对象。对于指针变量来说,把谁的地址存放在指针变量中,就说此指针变量指向谁。但应注意:只有与指针变量的基

39、类型相同的数据的地址才能存放在相应的指针变量中。,有关指针的小结 1.首先要准确地弄清楚指针的含义。指针就是地,有关指针的小结,void *指针是一种特殊的指针,不指向任何类型的数据,如果需要用此地址指向某类型的数据,应先对地址进行类型转换。可以在程序中进行显式的类型转换,也可以由编译系统自动进行隐式转换。无论用哪种转换,读者必须了解要进行类型转换3. 要深入掌握在对数组的操作中怎样正确地使用指针,搞清楚指针的指向。一维数组名代表数组首元素的地址,有关指针的小结 void *指针是一种特殊的指针,不指向任何,有关指针的小结,int *p,a10; p=a;p是指向int类型的指针变量,p只能指

40、向数组中的元素,而不是指向整个数组。在进行赋值时一定要先确定赋值号两侧的类型是否相同,是否允许赋值。对“p=a;”,准确地说应该是:p指向a数组的首元素,有关指针的小结 int *p,a10;,有关指针的小结,4.有关指针变量的定义形式的归纳比较,见教材中表8.4(P289)。5.指针运算(1) 指针变量加(减)一个整数例如:p+,p-,p+i,p-i,p+=i,-=i等均是指针变量加(减)一个整数。将该指针变量的原值(是一个地址)和它指向的变量所占用的存储单元的字节数相加(减)。 (2)指针变量赋值将一个变量地址赋给一个指针变量不应把一个整数赋给指针变量,有关指针的小结4.有关指针变量的定义形式的归纳比较,见教材中,有关指针的小结,5.指针运算(3) 两个指针变量可以相减如果两个指针变量都指向同一个数组中的元素,则两个指针变量值之差是两个指针之间的元素个数(4) 两个指针变量比较若两个指针指向同一个数组的元素,则可以进行比较指向前面的元素的指针变量“小于”指向后面元素的指针变量如果p1和p2不指向同一数组则比较无意义 (5) 指针变量可以有空值,即该指针变量不指向任何变量,可以这样表示: p=NULL;,有关指针的小结5.指针运算,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号