回覆列表
  • 1 # 使用者7550090631176

    都沒回答到點子上啊。C/C++中支援一個implicit conversion (隱性轉換),叫做array to pointer conversion. 以下程式碼完全沒問題。因為a,作為一個數組,會隱性轉換為指標。

    An lvalue or rvalue of type “array of N T” or “array of unknown bound of T” can be converted to a prvalue of type “pointer to T”. The result is a pointer to the first element of the array.以上很容易理解。然後你會發現,但意義不同的哦。1. a在上面被自動轉化為指標,意義上等同於&a[0];2. &a意義上不等同於&a[0]哦,&a[0]其實是int *,就是整數指標,而&a其實是int (*)[10],是陣列指標!3. 不解釋然後我們來看樓主的問題。a[i]是什麼型別呢?a[i]的型別是int [n],就是a[i]的型別是維度為n的陣列。&a[i]是什麼型別呢?是 指標,指向維度為n 的陣列。你說不是可以隱性轉換麼?是的,可以。a[i]的型別是維度為n的int 陣列。隱性轉換成什麼呢?隱性轉換成 int *,指向a[i][0]的首地址。a[i]隱性轉換為&a[i][0], 所以a[i], &a[i]的值確實是相等的,但是型別不同。

  • 中秋節和大豐收的關聯?
  • 豐子愷的文章有哪些?