標籤

二元樹 (1) 字串常數池 (1) 投資 (3) 每月損益 (37) 例外處理 (1) 泛型 (2) 股票 (15) 指標 (5) 英文 (8) 基本資料型別 (1) 期貨 (1) 程式交易 (10) 量化投資 (5) 亂亂寫 (3) 概念 (3) 資料結構 (3) 演算法 (3) 數學 (3) 轉型 (1) AMA (1) ArrayList (1) assert (1) BeautifulSoup (1) C/C++ (8) casting (1) ClassCastException (1) classpath (1) Collection (4) Comparable (1) comparTo() (1) constructor (1) database (3) Debian (1) Dropbox (2) EA (2) enum (1) equals() (2) exception (3) extends (1) ffmpeg (1) final (1) Git (1) HashMap (1) HashSet (1) hasNext() (1) HTS (3) instanceof (1) IS-A (1) Iterator (1) JAVA (43) length (1) Linux (31) List (1) Mac (6) Map (1) ML (2) MT4 (6) MySQL (2) next() (1) NullPointerException (1) Number (1) Numpy (2) OpenCart (1) OpenCV (3) OSX (1) overloading (1) overriding (3) pandas (2) PHP (8) PriorityQueue (1) Python (11) Queue (1) random() (1) reverse() (1) Samba (1) SCJP (21) sqrt() (1) synchronized (1) talib (1) ufw (1) uTorrent (1) var-args (2) VHF (1) vim (2) Yhoo知識+ (4)

2011年11月19日 星期六

111030_C_Array Subscripting

#include <stdio.h>

int main(void) {
  int a[3] = { 10, 20, 30 };
  printf("a[0] = %d\n", a[0]);
  printf("a[1] = %d\n", 1[a]);
  printf("a[2] = %d\n", *(2 + a));
  return 0;
}

output:
a[0] = 10
a[1] = 20
a[2] = 30

說明:
int a[3] = { 10, 20, 30 };
a其實是這個陣列的起始位址,所以 a[0] 相當於 *a ;
那 a[1] 等同於 *(a + 1),對C語言來說,a[1]  *(a + 1)。
基於加法可交換性,所以 *(a + 1)  *(1 + a),
所以對C語言來說, a[1] ≡ *(1 + a) ≡ 1[a]
...
靠,這什麼鬼。


參考:
http://www.csie.ntu.edu.tw/~b94087/yap01_pointers_and_arrays.pdf
http://blog-jy.blogspot.com/2006/11/array-subscripting-in-c.html

沒有留言:

張貼留言