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

数组及地址问题

[复制链接]
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
是哦,你这是数组来的,数组的变量名其实就是一个地址来的.

多谢
小小超 回答时间:2015-7-21 08:14:09
学习了
yanhaijian 回答时间:2015-7-21 08:27:27
当然是相同的。
Mandelbrot_Set 回答时间:2015-7-21 09:08:59
其实下面这个也挺好玩的

typedef int (_cdecl *PROC)(void);
PROC proc;
#include "stdio.h"
int a()
{
   printf("haha!\n");
}
int main()
{
   proc=************************************************************a;
   proc();
   return 0;
}
风子 回答时间:2015-7-21 09:16:10
creep 发表于 2015-7-20 23:00
在C中, 在几乎所有使用数组的表达式中,数组名的值是个指针常量,也就是数组第一个元素的地址。 它的类型 ...

一直知道是这样但是说不清楚,原来这样子说,看书少的锅
creep 回答时间:2015-7-21 09:33:28
风子 发表于 2015-7-21 09:16
一直知道是这样但是说不清楚,原来这样子说,看书少的锅

之前网上下载过几个文档,讲的很不错,基本常用的指针和数组变换都包含进去了。
深入理解C语言指针的奥秘.pdf (176.4 KB, 下载次数: 5)
风子 回答时间:2015-7-21 10:47:41
creep 发表于 2015-7-21 09:33
之前网上下载过几个文档,讲的很不错,基本常用的指针和数组变换都包含进去了。

谢谢
12下一页

所属标签

相似问题

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