指针与数组指针的区别

time_younger 2016-07-22 08:40:21
加精
既然数组指针是指向数组的指针,指针内存放的是所对应的数组的地址,那么*p为什么不是元素而是地址呢?
...全文
7751 59 打赏 收藏 转发到动态 举报
写回复
用AI写文章
59 条回复
切换为时间正序
请发表友善的回复…
发表回复
星宇康 2019-08-31
  • 打赏
  • 举报
回复
假设我定义了一个 int (*p)[10]; 那么这个p是一个二级指针, 假设有数组 a[4][10], 那么可以 p = a; *p也就相当于a[0], *p是一级指针。
SeventhBlue 2018-12-28
  • 打赏
  • 举报
回复
好深奥呀,学习,学习!
丿夜曲 2018-12-28
  • 打赏
  • 举报
回复
p是数组首地址的地址,*p是数组首地址,**p是数组第一个元素。
xzsmmdzxz 2018-12-28
  • 打赏
  • 举报
回复
p是数组指针,*p当然指向数组,
但是数组不能整体读取或者赋值。
因此*p就是第一个元素的地址了
架构师李肯 2018-12-22
  • 打赏
  • 举报
回复
推荐楼主看下 数组指针和指针数组的区别。https://blog.csdn.net/szullc/article/details/84900643
jena_wy 2017-09-11
  • 打赏
  • 举报
回复
因为p是数组指针,所以*p指向第一行数组的地址。
不具名菜腿 2017-09-10
  • 打赏
  • 举报
回复
指针的本质是地址,确切的是代表数组的首地址
赵4老师 2017-01-18
  • 打赏
  • 举报
回复
http://edu.csdn.net/course/detail/2344 C语言指针与汇编内存地址-一.代码要素 http://edu.csdn.net/course/detail/2455 C语言指针与汇编内存地址-二.函数 http://edu.csdn.net/course/detail/2516 C语言指针与汇编内存地址-三.数组和二维数组 http://edu.csdn.net/course/detail/2517 C语言指针与汇编内存地址-四.三维数组
zhou792016 2017-01-17
  • 打赏
  • 举报
回复
我理解p就是指向数组的首地址a
未来在脚下 2016-08-17
  • 打赏
  • 举报
回复
定义: 数组指针:指向数组首地址的指针, 那么*p只是将p降一级,仍然是地址啊
ijpq 2016-08-12
  • 打赏
  • 举报
回复
很多教材讲过,指针指向(即存储)的是数组的首地址,不能理解为元素~
xuanhuanglin 2016-08-08
  • 打赏
  • 举报
回复
引用 48 楼 chen2qu 的回复:
"既然数组指针是指向数组的指针,指针内存放的是所对应的数组的地址,那么*p为什么不是元素而是地址呢?" 你说的中间那一段,其实已经很好的回答了你的问题。 但是你的问题,也是伪的,这里的元素,就是数组的地址,在这个问题中,是同一个东西。
他的意思是为什么*p指向的不是数组元素就是a[0] 我自己也搞不懂既然p是存放数组的地址,那数组的地址又是什么? 如果数组的地址是数组的首地址那么*p不就是a【0】啊?
chen2qu 2016-08-07
  • 打赏
  • 举报
回复
"既然数组指针是指向数组的指针,指针内存放的是所对应的数组的地址,那么*p为什么不是元素而是地址呢?" 你说的中间那一段,其实已经很好的回答了你的问题。 但是你的问题,也是伪的,这里的元素,就是数组的地址,在这个问题中,是同一个东西。
StrugglePeach 2016-08-06
  • 打赏
  • 举报
回复
不错,过来好好学习一下
qq_31195831 2016-08-05
  • 打赏
  • 举报
回复
引用 8 楼 zhao4zhong1 的回复:
电脑内存或文件内容只是一个一维二进制字节数组及其对应的二进制地址; 人脑才将电脑内存或文件内容中的这个一维二进制字节数组及其对应的二进制地址的某些部分看成是整数、有符号数/无符号数、浮点数、复数、英文字母、阿拉伯数字、中文/韩文/法文……字符/字符串、汇编指令、函数、函数参数、堆、栈、数组、指针、数组指针、指针数组、数组的数组、指针的指针、二维数组、字符点阵、字符笔画的坐标、黑白二值图片、灰度图片、彩色图片、录音、视频、指纹信息、身份证信息……
666
谁学逆向工程 2016-08-05
  • 打赏
  • 举报
回复
引用 45 楼 zhao4zhong1 的回复:
没我这个中间层,上层就不会直接调用底层API了?
没有API,我就没办法编程了
赵4老师 2016-08-05
  • 打赏
  • 举报
回复
引用 43 楼 xiaoyuanyuan2009 的回复:
[quote=引用 42 楼 zhao4zhong1 的回复:]
您老现在有没有时间学习了,有时间的话学一下Delphi XE 10,然后教教我们[/quote] 没我这个中间层,上层就不会直接调用底层API了?
fefe82 2016-08-04
  • 打赏
  • 举报
回复
引用 37 楼 qq_24861595 的回复:
[quote=引用 14 楼 fefe82 的回复:] 数组类型的对象出现在表达式中的时候,绝大部分情况会自动转化为指向数组第一个元素的指针(array-to-pointer conversion)。 如果 p 是指向数组的指针,那么 *p 就是数组,然后它将在绝大多数情况下被转化为指向数组第一个元素的指针。 这种转化在 sizeof() 里并不会发生。 =================== 注:数组不是指针。数组和指针是完全不同的类型。数组名可以当指针用,只是由于上面所说的转换的存在。
我想请问,如果此时对于p和*p分别加1操作,那么,他们移动的长度相等么[/quote] 不相等。 p+1 移动一个数组的长度 (*p) + 1 移动一个元素的长度
????5612 2016-08-04
  • 打赏
  • 举报
回复
引用 14 楼 fefe82 的回复:
数组类型的对象出现在表达式中的时候,绝大部分情况会自动转化为指向数组第一个元素的指针(array-to-pointer conversion)。 如果 p 是指向数组的指针,那么 *p 就是数组,然后它将在绝大多数情况下被转化为指向数组第一个元素的指针。 这种转化在 sizeof() 里并不会发生。 =================== 注:数组不是指针。数组和指针是完全不同的类型。数组名可以当指针用,只是由于上面所说的转换的存在。
我想请问,如果此时对于p和*p分别加1操作,那么,他们移动的长度相等么
谁学逆向工程 2016-08-04
  • 打赏
  • 举报
回复
引用 42 楼 zhao4zhong1 的回复:
您老现在有没有时间学习了,有时间的话学一下Delphi XE 10,然后教教我们
加载更多回复(39)

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧