比较C++数组元素引用的两种形式a[0]与0[a]
来源:互联网 发布:windows live id密码 编辑:程序博客网 时间:2024/06/01 09:29
比较C++数组元素引用的两种形式a[0]与0[a]
(转载请注明来源于金庆的专栏)
对于一个数组ar,求其最外层的维数。
C语言当中惯用的是 sizeof(ar) / sizeof(ar[0]),
可是在stlsoft库中是 sizeof(ar) / sizeof(0[ar])。
以前从没见过数组元素引用使用这样的形式:0[ar],能行吗?
ar[0]与0[ar]效果是一样的,其实是求地址,但是为什么用0[ar]呢?
生僻的用法降低了可读性。是不是有什么优点呢?
都是编译期计算,应该没有性能上的差别。
后来翻看了《Imperfect C++》一书,找到了这样做的原因。
0[ar]保证输入的ar是一个数组,而不是一个定义了operator []() 运算符的类实例。
例如ar是一个std::map时,C语言中的惯用法会得出错误的结果,
但是用0[ar]这样的形式,会编译出错,防止用户错误的使用。
(转载请注明来源于金庆的专栏)
对于一个数组ar,求其最外层的维数。
C语言当中惯用的是 sizeof(ar) / sizeof(ar[0]),
可是在stlsoft库中是 sizeof(ar) / sizeof(0[ar])。
以前从没见过数组元素引用使用这样的形式:0[ar],能行吗?
ar[0]与0[ar]效果是一样的,其实是求地址,但是为什么用0[ar]呢?
生僻的用法降低了可读性。是不是有什么优点呢?
都是编译期计算,应该没有性能上的差别。
后来翻看了《Imperfect C++》一书,找到了这样做的原因。
0[ar]保证输入的ar是一个数组,而不是一个定义了operator []() 运算符的类实例。
例如ar是一个std::map时,C语言中的惯用法会得出错误的结果,
但是用0[ar]这样的形式,会编译出错,防止用户错误的使用。
- 比较C++数组元素引用的两种形式a[0]与0[a]
- 比较C++数组元素引用的两种形式a[0]与0[a]
- C指针与数组两种形式的区别
- C语言字符数组的两种形式与区别
- char a[]和char *a的比较,数组名,数组首地址,a,&a,&a[0]
- char a[]和char *a的比较,数组名,数组首地址,a,&a,&a[0]
- char a[]和char *a的比较,数组名,数组首地址,a,&a,&a[0]
- [C/C++]数组与指针——a,a[0],&a,&a[0]区别小结
- a^b%c 的三种形式
- C语言-数组a[]:a与&a的不同
- C语言数组的一些运算*a,a+1,&a+1,a+0
- 数组中&a与&a[0]的区别
- 7、数组1---(定义、a,&a,&a[0]区别、以指针形式访问和以下标形式访问)(
- 递归---整数数组元素A[0]~A[i]中的最小值
- 数组a,&a,&a[0]
- 新手谈C数组_&a、&a[0]、a
- Bulls and Cows:比较两数组位置与元素完全相同、仅元素相同的的情况
- 数组名为a, a,&a,&a[0]
- 泥水匠,建筑工人,设计师
- Sql Server2000的全局变量
- DataGrid中分页优化
- 委托和事件入门(一)
- [菜鸟进阶] 软件版本后缀Beta,RC,Demo,Build等代表的含义
- 比较C++数组元素引用的两种形式a[0]与0[a]
- 一个程序员的奋斗历程(声明:此文为作者以第一人称自述,我从百度转载)
- $a==1与1==$a的效率比较
- 怎样成为一名程序员 (转载)
- 读《PHP 5权威编程》第一章“PHP 5新特性”有感
- PHP与Javascript的两种交互方式
- 声音四要素:音强、音调、音色和波形包络
- SQL*PLUS与服务管理器、导入imp导出exp
- 技术揭密之:DedeCMS存储过程