你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

数组及地址问题

[复制链接]
netlhx 提问时间:2015-7-20 21:41 /
发现一个奇怪的问题,请大家讨论一下

QQ截图20150720213916.png

QQ截图20150720213941.png

QQ截图20150720213953.png

QQ截图20150720214018.png

我的C语言在这里不管用了,V1和V2的值相同?


收藏 评论15 发布时间:2015-7-20 21:41

举报

15个回答
chifen 回答时间:2015-7-20 21:44:12
你可以试赋不同值 看看结果
creep 回答时间:2015-7-20 22:30:08
大哥,aBlendedImage[]可是个数组啊,aBlendedImage的值和&aBlendedImage的值如果不相等那就麻烦大了!!!!
creep 回答时间:2015-7-20 23:00:45
在C中, 在几乎所有使用数组的表达式中,数组名的值是个指针常量,也就是数组第一个元素的地址。 它的类型取决于数组元素的类型: 如果它们是int类型,那么数组名的类型就是“指向int的常量指针“。
       在以下两种场合下,数组名并不是用指针常量来表示,就是当数组名作为sizeof操作符和单目操作符&的操作数时。 sizeof返回整个数组的长度,而不是指向数组的指针的长度。 取一个数组名的地址所产生的是一个指向数组的指针,而不是一个指向某个指针常量的指针。所以&a后返回的指针便是指向数组的指针,跟a在指针的类型上是有区别的。
       请看下面的例子:
指针.jpg
从以上输出我们可以看出:数组名和数组名取地址在数值上是相同的,均表示数组第一个元素的地址。但是二者的颗粒度不同。        当数组是一维数组时,数组名是以一个数组元素为颗粒度,表现为“当数组名加1时,这里的1表示一个数组元素单元”,例子中的数组元素为整数,所以数组名加1时地址加4;而数组名取地址&以整个数组为颗粒度,表现为“当数组名取地址&加1时,这里的1是表示整个数组单元”,例子中的数组为有5个元素的整型数组,所以数组名取地址&加1时,地址加20.
       当数组是二维数组时,数组名array、array[0]、&array[0][0]以及数组名取地址&在数值上是相同的,同样各个之间的颗粒度不同。其中array[0]以及 &array[0][0] 的颗粒度相同,均是以一个数组元素为颗粒度,所以它们加1后,地址加4;而数组名和数组名取地址&颗粒度不同,前者以一行元素为颗粒度,后者以整个数组单元为颗粒度,所以前者加1,地址加3*4,后者加1,地址加6*4.
以上内容来源于网络:原文地址


lkl0305 回答时间:2015-7-20 23:16:02
学习了!
mark0668 回答时间:2015-7-21 00:51:24
是哦,你这是数组来的,数组的变量名其实就是一个地址来的.
netlhx 回答时间:2015-7-21 06:43:29
creep 发表于 2015-7-20 23:00
在C中, 在几乎所有使用数组的表达式中,数组名的值是个指针常量,也就是数组第一个元素的地址。 它的类型 ...

多谢,经验主义害人,一直觉得数组名就是地址,再取地址就没有意义了
netlhx 回答时间:2015-7-21 06:43:45
chifen 发表于 2015-7-20 21:44
你可以试赋不同值 看看结果

多谢
netlhx 回答时间:2015-7-21 06:44:11
mark0668 发表于 2015-7-21 00:51
是哦,你这是数组来的,数组的变量名其实就是一个地址来的.

多谢
ts2000 回答时间:2015-7-21 08:14:09
学习了
12下一页

所属标签

相似问题

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
微信公众号二维码 微信公众号
手机版二维码 手机版