指针

步入C语言得到学习已经有一段时间了,作为一门应用于底层开发的语言,相对于其他语言来说学习起来是比较困难的,特别是内存处理以及指针运用这些方面,在这里就来研究一下指针。
指针应用范围比较复杂,有指针变量,数组指针,函数指针,指向函数指针数组的指针,还有由指针组成的数组等等。首先是指针变量,如下:
在这里插入图片描述

上图是指针变量的定义和使用,先定义一个变量a并赋值,然后再定义一折指针变量p,并将变量a的地址值赋值给指针变量p。指针变量定义语法是“数据类型 * 变量名,指针变量虽说也是变量,但是和普通的变量是有区别的。普通变量存放的是数据,而指针变量存放的是地址,指针变量可以通过“*”操作符,操作指针变量指向的内存空间,这个过程称为解引用,如 *p = 10。
接着是数组指针,如下:
在这里插入图片描述

先定义一个一位数组,再定义一个指针并将数组的元素首地址赋值给指针,在这里要说一下,arr是数组名,直接将数组名赋值给指针就是将数组的首元素地址值赋值给指针,所以不用加上取地址的符号,也就是“&”。所以图中的两个打印语句输出的结果是一样的,因为直接对指针解引用就是对数组的首元素地址解引用。如果要通过指针遍历数组的话,如下:
在这里插入图片描述

直接通过for循环,燃脂针往后移就可以遍历整个数组了。
接下来再来看一下函数指针,首先定义一个带有参数的函数,如下:
在这里插入图片描述

然后定义一个函数指针,如下:
int (*pa)(int, int) = Add;
上面函数指针的定义中,第一个int代表指针指向的函数的返回值,(*pa)为指针,(int, int)为指针指向的函数的参数列表,参数类型需一致,直接将函数名赋值给指针相当于将函数地址赋值给指针,和数组名类似。最后通过函数指针调用函数,如下:
printf("%d", (*pa)(2, 3));
直接就是指针加参数列表。
接下来再看一看指针数组,什么是指针数组?指针数组就是由指针组成的数组,反过来就是一个数组的元素是指针。我们通过二维数组来说明。首先定义一个二维数组,如下:
在这里插入图片描述

再定义一个函数来遍历这个二维数组,如下:
在这里插入图片描述

上面函数的参数列表中的int(*p)[5]就是一个指针数组,int是数组的类型,(*p)是指针,指针后面跟着的[5]是数组长度,所以就是一个int类型,长度为5的指针数组。在主函数调用函数的方法如下:
print2(arr, 3, 5);
二维数组的传递方式也是通过数组名来传的。然后上面数组的元素打印语句只是其中一种,另外还有几种等价的写法,如下:
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值