当前位置:网站首页 > 技术博客 > 正文

c语言指针数组和数组指针区别



数组指针与指针数组:

优先级:()>[]>*

 int (*p)[3]   因为()优先级高,首先说明p是一个指针,指向一个int型的一维数组, 数组有3个元素,每个元素是一个int型整数
简单来说,就是int (*p)[3]是指一个指向数组的指针,它其实还是一个指针,只不过是指向数组而已  

而int *p[3]  [ ] 优先级高,先与p结合成为一个数组,再由int*说明这是一个整型指针数组指针数组本身就是个数组,只不过这个数组里存放的不是int 不是char,而是一个指针类型( int*,char* ),也就是就是地址 

所以:
数组指针:它是一个指针,它指向一个数组  
指针数组:它是一个数组,数组的元素都是指针

 

这里我们可以这样理解:

 数组指针 :指向数组的指针    本质是指针

 指针数组 :存放指针的数组    本质是数组

也就是什么在后面,他就是什么类型,比较容易理解把

 

数组指针的定义即使用:

如果为一维数组

这里为什么与要加上&呢     因为  p 本质是一个指向整个数组的指针  &a 代表的是整个数组的首地址,指向了整个数组     a代表的是数组首个元素的地址 是一个单纯的地址  (&a 与 a在数值上相同)  而在C语言中,赋值符号“=”号两边的数据类型必须是相同的p= &a; 是将整个数组的首地址赋值给p而p= a;  则是将一个指针赋值给p 这样子是错误的

同理,如果是二维数组 a则直接表示一个一维数组的首地址(a[][3])  而&a 则表示一个二维数组的首地址 所以赋值会出现错误

数组的定义即使用:

  有时我们需要用到一些特定的数值作为参数调用时,需要保存多个地址的时候 ,就可以使用指针数组

 

版权声明


相关文章:

  • js判断数据类型typeof2024-12-04 20:01:04
  • html的表单怎么做2024-12-04 20:01:04
  • 开窗函数和窗口函数区别2024-12-04 20:01:04
  • 时间图卷积2024-12-04 20:01:04
  • 图形验证码是怎么填写的啊2024-12-04 20:01:04
  • 字符串函数strcat2024-12-04 20:01:04
  • 背包问题例题讲解2024-12-04 20:01:04
  • 什么是倒排索引技术2024-12-04 20:01:04
  • idea maven换源2024-12-04 20:01:04
  • 安卓模拟器hyper-v重启后还是开着2024-12-04 20:01:04