数组指针和指针数组 理解与如何区别(简洁)

前言:“数组指针”和“指针数组”,咱俩名字组成完全一样,完全就是颠倒了一下前后,很多人搞混这俩名词,所以这篇里面我会详细介绍二者的理解与识别方法。

数组指针:

先了解一下数组指针的概念,首先,数组指针是一种指针,其指向的是数组,其基本形式为

int ( * ) []

因为方括号 [ ] 的优先级高于*,故而*后面的数组名会先与 [ ] 结合,可是我们希望数组名与*结合,所以先打起来括号把它们锁死(开玩笑),让它们先在一起再写 [ ] ,部分初始化后为

int nums[10];
int ( * num ) [x] = &nums;

一步一步理解意思,其意义为名为num的一个指针,指向的是类型为int、元素个数为x的数组,此时要注意,num指向的是整个nums数组,所以当使用num+1时,会跳过整个nums数组。

原本在使用指针打印某一个数组时,可以用作

int i = 0;
int nums[]={1,2,3,4,5,6};
int * p = nums;
while(i<sz)//sz假设是数组长度
{
  printf("%d",*(p+i));
  i++;
}

如果想用数组指针,但又不想跳过整个数组时 ,可以采用以下

int i = 0;
int nums[]={1,2,3,4,5,6};
int (* num )[sz] = &nums;//sz依旧假设为长度
while( i < sz )
 {
    printf("%d", (*num)[i] );----调为num[i]并且解引用即可
    i++;
 }

数组指针在许多地方包括使用自定义函数的传参时会常用到。

指针数组:

指针数组,顾名思义为“装着指针的数组”,它是一种数组,数组的内容是指针( * ),用于存放指针的一类数组,类比int 、char等定义的数组来说,就是把里面的元素从int 、char换成了int *,

因此定义形式为

int num = 5;
int *p = &num;
int * num[1]={ p };

指针数组一般会用在后续函数指针数组里面,作为调用函数的形式出现。

总结:相信不难发现,区别指针数组与数组指针的方法就是看后面两个字,是数组指针那就是指针,指针数组就是数组。 

评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

deer念

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值