(todo)数组名 有存储空间吗?

 

转与csdn

 

对于数组b[]b是数组的地址,但b不算变量,有没有一个地方存放b?而且b是不 
是存放的就是自己所在的地址。 
------------------------------------------------------------- 
数组名不是对象,数组才是对象,指针也是一种对象,因此,数组名并没有内存空间,它是一个右值。想看具体的代码么?把下面的代码汇编一下,就可以看见其区别了: 

char   a[10]; 
char   *p; 
p=a; 
a[2]=10; 
p[2]=20; 

编译器编译后的汇编代码是这样的: 

_main proc near 
push bp 
mov bp,sp 
sub sp,10 
push si 
lea si,word   ptr   [bp-10]     ;这个就是p=ap被保存在某个地方,这里p被优化为保存在寄存器 

mov byte   ptr   [bp-8],10       ;这个是a[2]=10a是直接堆栈操作,因为它是一个地址,没有存储空间 

mov byte   ptr   [si+2],20       ;这个是p[2]=20p是个变量,它被保存在寄存器si里面,因此进行操作时,要先取si的值,然后+2,再进行间接寻址 

xor ax,ax 
jmp short   @1 

如果数组名是一个变量的话,那就必定得先把bp-10保存在某个地方,例如di,就会产生下面的指令:lea   di,   word   ptr[bp-10],事实是,编译器并没有这样做,而是直接堆栈操作。 


char   *a[2]; 
那么a的值和&a的值是不是应该一样? 
----------------------------------- 
关于对数组名取地址的问题,由于数组名是右值,本来&a是不合法的,早期不少编译器就是指定&a是非法的,但后来C89/C99认为数组符合对象的语义,对一个对象取地址是合理的,因此,从维护对象的完整性出发,也允许&a,只不过,&a的意义,并非对一个数组名取地址,而是对一个数组对象取地址,也正因为如此,a才跟&a所代表的地址值一样,同时sizeof(a)应该跟sizeof(&a)一样,因为sizeof(&a)代表取一个数组对象的长度。

转载于:https://www.cnblogs.com/titer1/archive/2012/02/26/2368288.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/410049.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[html] 实现一个居中半透明的模态窗

[html] 实现一个居中半透明的模态窗 .modal{ width: 400px; height: 250px; position: absolute; top: 50%; left: 50%; background: rgba(0,0,0,.5); transform: translateX(-50%) translateY(-50%); }个人简介 我是歌谣,欢迎和大家一起交流前后端知识。放弃很容…

xyz坐标图_“色觉地图”的建立(二):辐照度与亮度、rgb空间、“颜色图”的混色方式...

上篇““色觉地图”的建立(一):光感受器、色匹配实验与CIE RGB坐标系“中说到,人的色觉是线性的,我们可以用叠加原理“混色”——这意味着色觉的空间固定不变,我们可以任意选择一组基底(或说坐标…

Nginx的应用之动静分离

Nginx 的动静分离 我们通过中间件将动态请求和静态请求进行分离,减少了不必要的请求消耗和延时。 动静分离后,即使动态服务不可用,但静态资源不会受到影响。 应用实例 1、准备环境 系统角色主机名IP服务CentOS 7.2反向代理Nginx_Proxy192.168…

[html] 说说你对网格布局的理解

[html] 说说你对网格布局的理解 目前是最强大的布局方案,但兼容性差个人简介 我是歌谣,欢迎和大家一起交流前后端知识。放弃很容易, 但坚持一定很酷。欢迎大家一起讨论 主目录 与歌谣一起通关前端面试题

【SQLSERVER】SQL SERVER 2008筛选表报错

【SQLSERVER】SQL SERVER 2008筛选表报错 错误详细:标题: Microsoft SQL Server Management Studio------------------------------无法为该请求检索数据。 (Microsoft.SqlServer.Management.Sdk.Sfc)有关帮助信息,请单击: http://go.microsoft.com/fwli…

安装ipython失败 in error catcher_疯狂的Python:零基础小白入门帖子详情 - 网易云课堂...

C:\Users\David>pip install IpythonCollecting IpythonUsing cached ipython-6.1.0-py3-none-any.whlCollecting pygments (from Ipython)Downloading Pygments-2.2.0-py2.py3-none-any.whl (841kB)53% |█████████████████▏ | 450kB 3.3kB/…

3d打印英语文献_锐医学院 | 只需10分钟!解读康复医学文献+英语学习

文献解读英语学习只需10分钟锐医学院致力于专业康复教育培训同时,也在康复领域专家的合作下,一直在研究康复领域最前沿所取得的研究成果、存在的问题以及发展趋势进行系统和全面的叙述和评论与各领域康复专业人士分享。文献解读有助于发现前沿性问题&…

node.js通过回调函数获取异步函数的返回结果

html文件代码<!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>我的node.js首页</title> </head> <body></body> </html> 通过buffer流读取html文件var fs require(fs);…

[html] 写页面布局时你有考虑过分辨率因素吗?还要考虑哪些因素呢

[html] 写页面布局时你有考虑过分辨率因素吗&#xff1f;还要考虑哪些因素呢 1.支持的最大和最小分辨率 2.流式布局还是响应式布局个人简介 我是歌谣&#xff0c;欢迎和大家一起交流前后端知识。放弃很容易&#xff0c; 但坚持一定很酷。欢迎大家一起讨论 主目录 与歌谣一起…

StreamWriter打开文件报错:”不支持给定路径的格式。“

StreamWriter swnew StreamWriter(path,false,Encoding.Default);这段话出异常&#xff0c;查下来发现文件名中还有:号&#xff0c;把半角的:变成全角的&#xff1a;问题即可解决。 转载于:https://www.cnblogs.com/yanzhenan/archive/2012/02/29/2373511.html

bigdecimal 保留两位小数_一律使用 BigDecimal,避免后患?

你知道的越多&#xff0c;不知道的就越多&#xff0c;业余的像一棵小草&#xff01;你来&#xff0c;我们一起精进&#xff01;你不来&#xff0c;我和你的竞争对手一起精进&#xff01;编辑&#xff1a;业余草zhuanlan.zhihu.com/p/94144867推荐&#xff1a;https://www.xttbl…

tcp 四次挥手_tcp三次握手和四次挥手

SYN&#xff1a;一个很小的包&#xff0c;tcp的第一个包&#xff08;同步序列编号&#xff09;ACK:确认响应SYN、ACK:为1表示确认连接FIN表示关闭连接&#xff0c;PSH表示有 DATA数据传输&#xff0c;RST表示连接重置。Acknowledge number(ack)&#xff1a;确认号&#xff0c;大…

ssh登录服务器提示错误no hostkey alg

ssh登录服务器提示错误no hostkey alg ssh root192.168.1.100 -vvv提示失败&#xff1a;no hostkey alg 登录到192.168.1.100服务器 rm -rf /etc/ssh/ssh*key systemctl restart sshd #我还是移走了&#xff0c;没有删除。因为之前安装了telnet服务&#xff0c;因此不用担心连…

[html] 打印页面时怎样自定义打印页眉页脚或者去掉眉页脚?

[html] 打印页面时怎样自定义打印页眉页脚或者去掉眉页脚&#xff1f; <style type"text/css" media"print"> page { size: auto; /* auto is the initial value / margin: 0mm; / this affects the margin in the printer settings */ } </styl…

sqlite 的几点见解

这几天接触了sqlite数据库&#xff0c;开始不上手感觉太变态连DataTime数据类型的都不能返回一个DataSet。 但是在网上查了几天后才发现其实sqlite还是很容易上手的。 我说几点我预到的问题&#xff1a; 1&#xff0c;字段的自增我们在sqlite中的字段自增是把数据类型设为integ…

python正则匹配字符串中的数字_Python正则表达式匹配字符串中的数字

1.使用“\d”匹配全数字代码&#xff1a;import rezen "Arizona 479, 501, 870. Carlifornia 209, 213, 650."m re.findall("\d", zen)print(m)结果&#xff1a;[479, 501, 870, 209, 213, 650]但是上述这种方式也会引入非纯数据&#xff0c;例子如下&am…

node.js之文件读写模块,配合递归函数遍历文件夹和其中的文件

fs.stat会返回文件夹会文件的属性var fs require(fs); var wenwa function (pathname,callback) {fs.stat(pathname,function (err,data) {if(err) throw err;else{if(data.isDirectory()){var wenheichouwa function (callback){fs.readdir(pathname,function (err,fileor…

ms查约束具体代码_ECCV 2020附代码论文合集(CNN,图像分割)

ECCV 2020 共接受 1361 篇论文&#xff0c;涵盖了包括目标检测&#xff0c;语义分割&#xff0c;图像分类&#xff0c;点云&#xff0c;图像重建&#xff0c;神经网络模型等热门主题。对计算机视觉感兴趣的小伙伴们也许你们已经阅读完论文并对论文的内容跃跃欲试了吧&#xff0…

[html] 如何设置打印尺寸?

[html] 如何设置打印尺寸&#xff1f; media print { ... }个人简介 我是歌谣&#xff0c;欢迎和大家一起交流前后端知识。放弃很容易&#xff0c; 但坚持一定很酷。欢迎大家一起讨论 主目录 与歌谣一起通关前端面试题

路径规划算法_自动驾驶汽车路径规划算法浅析

自动驾驶汽车的路径规划算法最早源于机器人的路径规划研究&#xff0c;但是就工况而言却比机器人的路径规划复杂得多&#xff0c;自动驾驶车辆需要考虑车速、道路的附着情况、车辆最小转弯半径、外界天气环境等因素。本文将为大家介绍四种常用的路径规划算法&#xff0c;分别是…