当前位置: 首页 > news >正文

什么是指针数组 和 数组指针

什么是指针数组

答:就是一个数组,里面存的是指针而已

它的写法可以如下:

int *a[10];

看看,它就是一个指针数组,数组名字当然是a,里面有10个元素,每个元素都是一个int *类型(即存放整型地址的指针)的指针。我们可以这样用,比如:

 

#include<stdio.h>C
int main()
{int x=10,y=20,z=30;int *a[10];a[0]=&x;a[1]=&y;a[2]=&z;//...printf("%d  %d  %d\n",*a[0],*a[1],*a[2]);return 0;
}

大家可以看到,数组a有10个元素,每个元素都可以存放一个整型的指针,程序当中存放了三个指针,分别是x,y,z的地址,然后进行了输出,请大家理解代码的含义,进而也就理解了指针数组,以及指针数组的用法 

什么是数组指针 

答:就是一个指针,只不过这个指针指向一个数组

什么?还能指向一个数组??没错,你没有看错,的确可以用一个指针指向一个数组,或者,我们也可以叫它为行指针

比如我们,定义一个数组指针,如下:

int (*p)[10];

大家注意看它的写法,因为小括号优先级高的原因,所以p本身是指针的属性,指向的是一个有10个整型元素的一个数组,即所谓的行指针。那么它怎么用,如何用呢,下面给大家代码理解: 

#include<stdio.h>
int main()
{int (*p)[10];int a[10]={1,2,3,4,5,6,7,8,9,0};p=&a;printf("%d\n",*(*(p+0)+1));printf("%d\n",p[0][3]);return 0;
}

大家可以看到我首先定义了一个行指针p,然后定义了一个一维数组a,然后将p指向了a数组,这就是行指针指向了一行数组,类型都是整型,都是有10个元素,因此类型一致。那么注意后面的两个printf,都是通过p来输出数组a当中的两个元素,大家可以看到,都是用到了二维的数组的形式输出,为什么可以呢?原因就在于p是行指针,每次加1也就意味着加一行,因此如果用p来输出a元素的值,需要两个"降级"才可以,就会有这样的写法,请大家上机试验,反复理解 


http://www.mrgr.cn/news/63020.html

相关文章:

  • SSRF服务端请求伪造漏洞——POST请求
  • 用ChatGPT提升工作效率:从理论到实际应用
  • 力扣每日一题 3165. 不包含相邻元素的子序列的最大和
  • 【解决方案】微信小程序如何使用 ProtoBuf 进行 WebSocket 通信
  • git入门教程16:git简明教程,一篇够了
  • Java 子类继承父类,构造方法调用规则
  • antd 5X中 tree属性结构,自定义菜单,右键菜单实现方式
  • 使用Nginx作为反向代理和负载均衡器
  • Linux---cp命令
  • 判断101—200之间有多少个素数,并输出所有素数
  • 芯片校正LDO电压
  • 10.31日志
  • 丢失有一段时间时的数据可以找回吗?可以!
  • 简单介绍Class文件、Dex文件以及ELF文件
  • LeetCode 热题 100 回顾27
  • spring集成kafka
  • 【Linux】掌握库的艺术:我的动静态库封装之旅
  • 【ShuQiHere】在 elementary OS 上安装 Wine 的完整指南
  • 【一些关于Python的资源】
  • windows C#-类型系统(上)
  • 向量和矩阵的范数
  • Discourse 是否支持手机注册
  • ONLYOFFICE 8.2 版本产品评测——遥遥领先
  • C++ 优先算法——盛最多水的容器(双指针)
  • 闯关leetcode——231. Power of Two
  • Android 刘海屏适配指南