C语言一维数据中2[arry]问题
今天看到书上有讲一维数据的,看到下面的种情况。以前一直不了解。(本程序在windows和linux下面都没有问题)
#include<stdio.h>
int main()
{int arry[10]={1,2,3,4,5,6,7,8,9,0};int c,d,e;c=2[arry];//这种情况之前没见过d=arry[2];e=*(arry+2);printf("%d",2[arry]);return 0;
}
其中的c=2[arry],之前没见过这种写法,一直认为是非法的。其实是合法的。c=2[arry]相当于*(2+arry),也即*(arry+2 )这种常见情况。即编译器一般对数据的下标操作优化为指针的操作,即将arry[2]优化为*(arry+2),通常情况下下标操作不可能比指针操作快,但指针操作可能比下标操作快,能带来一点性能上面的优化,但是程序的可读性会下降。下面是通过VC6.0 View-->Debug Windows-->Dissassembly得到的汇编代码,可以看出,上面三种调用时一样的。(查看汇编代码要先设置断点)。
0040D71F mov dword ptr [ebp-24h],2
0040D726 mov dword ptr [ebp-20h],3
0040D72D mov dword ptr [ebp-1Ch],4
0040D734 mov dword ptr [ebp-18h],5
0040D73B mov dword ptr [ebp-14h],6
0040D742 mov dword ptr [ebp-10h],7
0040D749 mov dword ptr [ebp-0Ch],8
0040D750 mov dword ptr [ebp-8],9
0040D757 mov dword ptr [ebp-4],0
5: int c,d,e;
6: c=2[arry];
0040D75E mov eax,dword ptr [ebp-20h]
0040D761 mov dword ptr [ebp-2Ch],eax
7: d=arry[2];
0040D764 mov ecx,dword ptr [ebp-20h]
0040D767 mov dword ptr [ebp-30h],ecx
8: e=*(arry+2);
0040D76A mov edx,dword ptr [ebp-20h]
0040D76D mov dword ptr [ebp-34h],edx
C语言一维数据中2[arry]问题相关推荐
- 【DSP】运用FFT抑制一维数据中的高频分量(Python及Java安卓实现)
如果已经对傅里叶变换有深刻的理解,想直接看代码,建议直接往后点.前半部分感觉还不够完整,后面有机会再修改. FFT与DFT FFT(Fast Fourier Transformation),快速傅里叶 ...
- 使用R语言筛选数据中的重复行
在进行数据的预处理时,我们常常关注有无重复数据,如果两行数据完全一致,则可能存在数据的重复录入等情况,此时就要对这两行数据进行核实.但这个过程如何用R语言实现?笔者近期对这个问题进行了探索. 我们首先 ...
- R语言 提取数据中的任意子集
# 生成数据 data <- data.frame(name = c('bob', 'tomas', 'jack'),year = c(17, 18, 19),score1 = c(78, 85 ...
- 请编写fun()函数,函数的功能是删去一维数组中相同的数据在一起出现的数,相同的数只保留一个
<程序设计基础实训指导教程-c语言> ISBN 978-7-03-032846-5 p143 7.1.2 上级实训内容 [实训内容13]请编写fun()函数,函数的功能是删去一维数组中相同 ...
- 最大值_期末C语言特辑 计算一维数组中最大值
点击蓝字 关注我们 期末C语言特辑 计算一维数组中最大值 [问题描述]输入10个整型数据,存入数组a中,计算其最大值及其所在元素的下标位置. [输入形式]"%d" [输出形式]&q ...
- c语言一维数组教学设计,C语言教学中一维数组教学设计.doc
C语言教学中一维数组教学设计 C语言教学中一维数组教学设计 [摘 要] 数组是C语言中非常重要的概念,通常学生在初次接触到这一概念时感到很抽象.本文通过生活中常常接触到的超市储物柜与数组进行类比,将数 ...
- C语言编程>第七周 ⑧ 请编一个函数void fun(int a[M][N],int b[N]),c指向一个M行N列的二维数组,求出二维数组每列中最大元素,并依次放入b所指一维数组中。
例题:请编一个函数void fun(int a[M][N],int b[N]),c指向一个M行N列的二维数组,求出二维数组每列中最大元素,并依次放入b所指一维数组中.二维数组中的数己在主函数中赋予. ...
- c语言中的一维数组的定义,C语言一维数组的定义和引用
<C语言一维数组的定义和引用>由会员分享,可在线阅读,更多相关<C语言一维数组的定义和引用(5页珍藏版)>请在人人文库网上搜索. 1.C语言一维数组的定义和引用在程序设计中,为 ...
- 删除重复的数字c语言,(C语言)删去一维数组中所有相同的数
<(C语言)删去一维数组中所有相同的数>由会员分享,可在线阅读,更多相关<(C语言)删去一维数组中所有相同的数(2页珍藏版)>请在人人文库网上搜索. 1.1. 删去一维数组中所 ...
最新文章
- 常用API(Object、String、StringBuffer、用户登陆注册)
- 39.左值、左值引用、右值、右值引用
- flink 1-个人理解
- 城市遥感动态监测管理系统
- 从新手到Flutter架构师,一篇就够!吐血整理
- 现代计算机应用特点,现代计算机的特点和计算机的发展
- Spring容器,控制反转,依赖注入
- 简单分析帆软报表中一次HTTP请求的过程。
- centos rpm安装mysql5.6_CentOS 7下使用RPM安装MySQL 5.6
- 设置角速度及生成四元数及利用刚体
- SOA与云计算有多大关联?
- 关于vue编译版本引入的问题
- LaTex 数学之数学字体
- 成功解决TypeError: distplot() got an unexpected keyword argument ‘y‘
- 微信永久封号怎么解封?微信社交场景被限制解决办法
- 疫情下的春招实习历程
- 为什么说串行比并行速度快?
- 如何打开被关闭的任务管理器
- python+opencv+图像特效(图像灰度处理、颜色翻转、图片融合,边缘检测,浮雕效果,颜色映射)
- HttpClient javax.net.ssl.SSLPeerUnverifiedException: Certificate doesn't match 错误解决办法
热门文章
- 【AtomicLong】常规用法
- Three extrude挤压模型实例
- 对话框 QDialog
- 自媒体人必备运营工具
- smart 200密码忘记_如何阻止某些Android应用与Smart Lock同步密码
- 手机数据丢失!没想到是这样找回来的
- 从 4 个面试题了解「浏览器的垃圾回收」
- 联想服务器rd650性能,澎湃性能为云创新:联想ThinkServer RD550/650新品发布
- php局部变量和全局变量的区别,PHP局部变量、静态变量、全局变量和超全局变量的使用和区别...
- 以太坊区块链也拥堵_以太坊开发人员:EOS刻意拥堵以太坊网络 推高交易费到1美元...