指针数组的应用

指针数组

数组

用一段代码来让对数组有更深的理解

 #include <stdio.h>
int main(void)
{
  int arr[3]={1};
  printf("arr[0]地址:%p\n",arr);
  printf("arr[1]地址:%p\n",arr+1);
  printf("arr[2]地址 :%p\n",arr+2);
  return 0;
}

地址的补充

数组名 就是 首地址   

运行结果

arr[0]地址:0061FF14
arr[1]地址:0061FF18
arr[2]地址 :0061FF1C

为什么出现这些效果

1 定义了int类型 int ---四个字节  并且系统为数组每个元素分配 独立的空间
2 这个空间大小 是 int 类型的 
3 数组元素是离散 并且有规律可言 每次都是加1*4个字节得到下一个
 0061FF14+4=:0061FF18  0061FF18 +4=0061FF1C
 c就是 12  0123456789abc 刚刚好12 (a=10)

指针数组

定义一个指针变量

int*p;//*告诉计算机声明我是一个指针变量  并且是指向int类型的

定义一个指针数组

int *p[4];

涉及到优先级问题(很重要 慢慢体会)

由于[]* 优先级 高 所以 p先会[4]结合 形成 p[4] 显示是数组形式 
表示p数组有四个元素 最后和p前面的*结合 ,表示数组是指针类型的 
指针数组 本质就是数组

1)代码

#include <stdio.h>

int main(void)
{
   int  a = 10;
   int  b = 11;
   int  c = 12;
   int  d = 13;
  
    int *p[4];

    p[0]=&a;//初始化
    p[1]=&b;//初始化
    p[2]=&c;//初始化
    p[3]=&d;//初始化
    printf("指针1元素%d\n",*p[0]);
    printf("指针2元素%d\n",*p[1]);
    printf("指针3元素%d\n",*p[2]);
    printf("指针4元素%d\n",*p[3]);

    return 0;

}

指针数组的重新认知

根据上面说到的优先级的概念 指针数组 首先是数组,然后才是指针类型的 
现在 先不管类型问题 我们可以根据数组名就是地址 的概念延伸 
数组名偏移之后 他还是地址 这里也是一样 有四个地址 地址都是指针类型的 
并且一个地址有一个元素  又因为指针===地址  
最后可以说 一个指针对应一个数组元素  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值