指针

数组:

数组是一种类型的数据的集合。
数组的下标引用使用 [ ] 操作符,在 [ ]中必须是一个常量,不能是一个变量。
数组中的数据在内存中存储的方式是 依次排列在一段连续的内存中。
数组名可以看作表示首元素的地址。
数组传参时,传的是一个地址,即指针类型。
对于一个数组:arr[5] 若arr++, 则是指向数组的下一个元素, 若是&arr++,则跳过整个数组。

指针:

在计算机科学中,指针(Pointer)是编程语言中的一个对象,利用地址,它的值直接指向(points to)存在 电脑存储器中另一个地方的值。由于通过地址能找到所需的变量单元,可以说,地址指向该变量单元。因 此,将地址形象化的称为“指针”。意思是通过它能找到以它为地址的内存单元。
指针就是个变量,用来存放地址,地址唯一标识一块内存空间。
指针的大小是固定的4/8个字节(32位平台/64位平台)。
指针是有类型,指针的类型决定了指针的±整数的步长,指针解引用操作的时候的权限。
一级指针和二级指针
一级指针就是一个保存了某个地址的变量,二级指针就是指向指针的指针,即保存了数据p的地址,而p是一个存储了一个地址得到指针。

在这里插入图片描述
可以看出,n [5] 的首元素的地址是0x232445,指针p 保存n的首元素的地址,而二级指针p2保存指针p的地址。
数组指针
数组指针本质上是一个指针,这个指针指向一个数组,即这个指针保存的是数组的地址。
int (*p)[10]; 这就是一个数组指针。p先和解引用操作符结合表示它是指针变量,再指向一个大小是int 类型10 个元素的数组。
通常使用在二维数组传参时:因为数组名代表首元素的地址,但是二维数组的首元素是二维数组的第一行,
所以数组名传过去的参数其实是第一行元素的地址,相当于一个一维数组的地址。
所以这个地址可以用数组指针接收。
综上可以知道,若是对一个二维数组用数组指针传参时,要想得到数组中某个元素必须给这个数组指针解引用两次,
第一次解引用得到某一行的地址,即一个一维数组的地址。
再解引用一次,才能得到数组中一个具体元素的值。
指针数组
指针数组是一个保存指针元素的数组。
int *p[10]; 就是一个保存10个int 类型指针的数组。( [ ] 优先级大于解引用操作符)
函数指针
保存一个函数的地址的指针。
void (*p) ( ); 就是一个函数指针,p先和解引用操作符结合表示它是一个指针,在和函数调用操作符结合。
函数指针数组
int ( *p[10] )( );
p先和 [ ] 结合表示它是一个数组,这个保存的是 int( * )( ) 类型的函数。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值