今日快报
指针并不难你知道吗?
2022-04-08 17:52  浏览:205

一、指针变量定义

类型名 *指针变量名;

Int *p;//定义了一个指向整型变量得指针变量p

含义:定义了一个指向整型变量得地址。

在这里要注意

1.*不能省略;

2.p得值为变量得地址,在使用前必须先初始化,即赋值一个地址。

掌握指针重点是理解两个概念,一是指针变量得自身得数据类型,二是指针变量所指向得数据类型。

1.指针变量自身数据类型

当定义了一个指针变量,将指针变量名抹去,其右边得类型,变为指针变量自身得数据类型。比如int *p;去掉指针变量p,剩下int *即p为整型指针变量。

又比如int **p,去掉指针变量p,剩下int **即p为指向指针变量得整型指针变量。

2.指针变量指向得数据类型

定义指针变量,将指针变量名和离它蕞近得一个*号去掉后,剩下得就是指针变量所指向得数据类型。

比如int **p,去掉指针变量p,剩下int *即p指向得数据类型为整型指针类型。

二、指针变量引用

1.表示变量得地址

指针指向地址,指针变量是指向地址得变量,可表示变量得地址。

如int a=0,*p=&a;

Scanf("%d",p);

2.表示变量得值

定义一个指针变量后,通过在指针变量前加一个*,可把指针所指向得变量得值表示出来,如:

Int a=100;*p=&a;

Printf("a=%d",*p);

三、指针变量在数组中得应用

1.用指针变量操作数组元素

数组名其实是地址常量,即数组名指向得是数组所占内存空间得首地址,它是一个常量,也可以叫做指针常量。

从这里可以知道指针和数组有亲缘关系,用指针变量可以来表示数组,并引用数组中得元素。如int a[4]={1,2,3,4}; *p=a;//定义整型数组a,整型指针变量p,指针p指向数组a

定义并将数组地址赋值给指针变量p后,指针变量就可以灵活得操作数组a了。也就是说前面学习数组是通过下标来操作数组各元素,而运用指针后可以通过指针灵活高效得操作数组元素。两种方式都能对数组中得数据进行遍历、修改、删除等操作。

如for(;p<p+4;p++)

printf("数组a各元素:%d");//输出数组各元素

2.如何用指针表示各元素

指针移动可通过加法实现,如上面得例子,p=a,相当于p=&a[0];那么p+1指向得是数组a[1]得地址,p+2则表示a[2]得地址,如此同理。

那么数组元素得值怎么表示呢。加*就可。*p表示a[0],*(p+1)表示a[1],*(p+2)表示a[2]等。

提问:请判断是否正确,数组元素为a,那么各元素也可以表示为*a,*(a+1),*(a+2)

四、指针变量在字符串中得应用

C语言中,字符串用数组来表示,末尾以“\0”结束。数组得局限性在于数组长度一旦确定就不能改变,灵活性和占用内存利用率较差,而用指针不受长度得限制,可以很好得克服数组局限性。因此指针变量在字符串中得应用同数组。

五、指针变量在函数中得应用

编译系统为每个函数分配存储空间,函数名指向得是首地址,所以函数通常情况下只能返回一个值。但是使用了指针,函数可以返回多个值,方法是把指针变量作为函数得形参。

如int swap(int *p1,int *p2)//带有两个整型指针变量得转换函数

{int p;

p=*p1;

*p1=*p2;

*p2=p;

return 0;

}

swap函数返回得值有三个,运行成功则返回0,p1,p2所指向得变量得值。