今天看到书上有讲一维数据的,看到下面的种情况。以前一直不了解。(本程序在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]问题相关推荐

  1. 【DSP】运用FFT抑制一维数据中的高频分量(Python及Java安卓实现)

    如果已经对傅里叶变换有深刻的理解,想直接看代码,建议直接往后点.前半部分感觉还不够完整,后面有机会再修改. FFT与DFT FFT(Fast Fourier Transformation),快速傅里叶 ...

  2. 使用R语言筛选数据中的重复行

    在进行数据的预处理时,我们常常关注有无重复数据,如果两行数据完全一致,则可能存在数据的重复录入等情况,此时就要对这两行数据进行核实.但这个过程如何用R语言实现?笔者近期对这个问题进行了探索. 我们首先 ...

  3. R语言 提取数据中的任意子集

    # 生成数据 data <- data.frame(name = c('bob', 'tomas', 'jack'),year = c(17, 18, 19),score1 = c(78, 85 ...

  4. 请编写fun()函数,函数的功能是删去一维数组中相同的数据在一起出现的数,相同的数只保留一个

    <程序设计基础实训指导教程-c语言> ISBN 978-7-03-032846-5 p143 7.1.2 上级实训内容 [实训内容13]请编写fun()函数,函数的功能是删去一维数组中相同 ...

  5. 最大值_期末C语言特辑 计算一维数组中最大值

    点击蓝字 关注我们 期末C语言特辑 计算一维数组中最大值 [问题描述]输入10个整型数据,存入数组a中,计算其最大值及其所在元素的下标位置. [输入形式]"%d" [输出形式]&q ...

  6. c语言一维数组教学设计,C语言教学中一维数组教学设计.doc

    C语言教学中一维数组教学设计 C语言教学中一维数组教学设计 [摘 要] 数组是C语言中非常重要的概念,通常学生在初次接触到这一概念时感到很抽象.本文通过生活中常常接触到的超市储物柜与数组进行类比,将数 ...

  7. 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所指一维数组中.二维数组中的数己在主函数中赋予. ...

  8. c语言中的一维数组的定义,C语言一维数组的定义和引用

    <C语言一维数组的定义和引用>由会员分享,可在线阅读,更多相关<C语言一维数组的定义和引用(5页珍藏版)>请在人人文库网上搜索. 1.C语言一维数组的定义和引用在程序设计中,为 ...

  9. 删除重复的数字c语言,(C语言)删去一维数组中所有相同的数

    <(C语言)删去一维数组中所有相同的数>由会员分享,可在线阅读,更多相关<(C语言)删去一维数组中所有相同的数(2页珍藏版)>请在人人文库网上搜索. 1.1. 删去一维数组中所 ...

最新文章

  1. 常用API(Object、String、StringBuffer、用户登陆注册)
  2. 39.左值、左值引用、右值、右值引用
  3. flink 1-个人理解
  4. 城市遥感动态监测管理系统
  5. 从新手到Flutter架构师,一篇就够!吐血整理
  6. 现代计算机应用特点,现代计算机的特点和计算机的发展
  7. Spring容器,控制反转,依赖注入
  8. 简单分析帆软报表中一次HTTP请求的过程。
  9. centos rpm安装mysql5.6_CentOS 7下使用RPM安装MySQL 5.6
  10. 设置角速度及生成四元数及利用刚体
  11. SOA与云计算有多大关联?
  12. 关于vue编译版本引入的问题
  13. LaTex 数学之数学字体
  14. 成功解决TypeError: distplot() got an unexpected keyword argument ‘y‘
  15. 微信永久封号怎么解封?微信社交场景被限制解决办法
  16. 疫情下的春招实习历程
  17. 为什么说串行比并行速度快?
  18. 如何打开被关闭的任务管理器
  19. python+opencv+图像特效(图像灰度处理、颜色翻转、图片融合,边缘检测,浮雕效果,颜色映射)
  20. HttpClient javax.net.ssl.SSLPeerUnverifiedException: Certificate doesn't match 错误解决办法

热门文章

  1. 【AtomicLong】常规用法
  2. Three extrude挤压模型实例
  3. 对话框 QDialog
  4. 自媒体人必备运营工具
  5. smart 200密码忘记_如何阻止某些Android应用与Smart Lock同步密码
  6. 手机数据丢失!没想到是这样找回来的
  7. 从 4 个面试题了解「浏览器的垃圾回收」
  8. 联想服务器rd650性能,澎湃性能为云创新:联想ThinkServer RD550/650新品发布
  9. php局部变量和全局变量的区别,PHP局部变量、静态变量、全局变量和超全局变量的使用和区别...
  10. 以太坊区块链也拥堵_以太坊开发人员:EOS刻意拥堵以太坊网络 推高交易费到1美元...