比较C++数组元素引用的两种形式a[0]与0[a]
来源:互联网 发布:nginx lua 获取header 编辑:程序博客网 时间:2024/06/06 16:39
(来源于金庆的专栏:http://blog.csdn.net/jq0123/article/details/2010009)
对于一个数组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]这样的形式,会编译出错,防止用户错误的使用。
0 0
- 比较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]
- java编程思想之泛型类
- iOS面试四
- BZOJ 2333 SCOI2011 棘手的操作 可并堆套可并堆
- 1002. A+B for Polynomials (25)
- source openrc.sh
- 比较C++数组元素引用的两种形式a[0]与0[a]
- hibernate中SQLQuery的addEntity();方法
- 删除Mac中所有 .DS_Store 隐藏文件
- PHP缓存处理
- iOS给.h .m文件换名称
- Cannot find the class file for java.lang.Object
- win8+hadoop1.2.1+eclipse4.4.2插件安装
- Apache Hadoop2.0之HDFS均衡操作分析
- 我辞职了,任性一下