比較C 陣列元素引用的兩種形式a 0 與0 a

2021-08-22 13:53:21 字數 471 閱讀 7432

比較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]這樣的形式,會編譯出錯,防止使用者錯誤的使用。

比較C 陣列元素引用的兩種形式a 0 與0 a

於金慶的專欄 對於乙個陣列ar,求其最外層的維數。c語言當中慣用的是 sizeof ar sizeof ar 0 可是在stlsoft庫中是 sizeof ar sizeof 0 ar 以前從沒見過陣列元素引用使用這樣的形式 0 ar 能行嗎?ar 0 與0 ar 效果是一樣的,其實是求位址,但是為...

Matlab中陣列元素引用 三種方法

1.matlab中陣列元素引用有三種方法 1.下標法 subscripts 2.索引法 index 3.布林法 boolean 按列儲存 與fortran一樣 比如說下面的二維陣列 a 8 1 6 3 5 7 4 9 2 matlab的儲存順序是8,3,4,1,5,9,6,7,2,也就是說 先行後列...

Matlab中陣列元素引用 三種方法

1.matlab中陣列元素引用有三種方法 12 31.下標法 subscripts 2.索引法 index 3.布林法 boolean 按列儲存 與fortran一樣 比如說下面的二維陣列 a 8 1 6 3 5 7 4 9 2 matlab的儲存順序是8,3,4,1,5,9,6,7,2,也就是說 ...