指针在c语言中的应用

指针有基本类型指针、函数指针、数组指针、指针数组(实质上是数组)、多级指针、空指针、野指针。

首先我们来讲讲基本类型指针

1.整形指针,字符指针,浮点指针等基本指针,这类指针储存对应类型的地址如

int a=5;

int *p=a;这个p便是储存着a的地址,同理,char*p则储存字符类型数组,那么这些指针有什么区别呢,首先,我们知道整形是4个字节,字符是1个字节,那么当对这类指针解引用想要取出里面的值时会访问相应字节内存。

后面就是函数指针,函数指针就指向某个函数,调用这个指针就可以调用相应函数,它的写法为函数返回类型+(*函数名)(函数传入值类型)比如我们可以写上加法函数

int add(int x,int y)

{

return x+y;

}

这个函数指针就是int (*ptr)(int x,int y)=add;可以通过函数ptr(3,5)来调用这个函数。那么我们可以借助函数指针进行很多灵活使用。可以优化性能,实现回调函数。

指针数组,毫无疑问就是储存指针的数组,定义为(类型)*(数组名)【数组元素个数】

里面储存的都是前面定义的类型指针的数组,如char*就全是字符指针类型的数组,他可以管理字符串等,如char*arr[3]={"hello","apple","world"}里面的arr[1]就是Apple的首字母地址。就可以依次打印出来。

数组指针,定义为指向数组的指针,写法是(类型)(*指针变量名字)【数组元素个数】

如我们写一个指向含有三个整形的数组的指针。

int arr[3]={0,1,2};

int(*ptr)[3]=&arr;那么ptr就是一个数组指针,它指向了arr数组,这个数组含有三个元素,是整形类型。通常用于函数传参时,能够接收一个固定类型的数组大小,防止数组长度丢失。

多级指针,我们以二级指针为例,二级指针就是储存了一级指针地址的指针,写法为(类型)**名字,如int*p=&a;int** pp=&p;那么pp就是二级指针变量储存了p指针的地址,同理,三级指针四级指针也是如此。

空指针就是可以用于初始化一个指针,它比较安全,不能对他进行操作,用于函数返回值。

野指针是一个未被初始化的指针,他很危险,因为他是指向随机内存的,调用的时候可能会导致程序出错或者不能达到预期。

指针与指针之间也有运算

指针-指针是两个指针之间的元素个数,当然要同类型的指针才能相减

指针+1就是跳过对应类型字节,int就是跳过四个,用在int类型数组就是指向下一个元素,用在char类型数组就是指向后面第四个的元素。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值