首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

C++ 二維陣列位址運算題解析:`a[2][1]` 位址的四種表示法辨析

     編輯:程式設計綜合問答

題目回顧

已知 int a[3][3] = {1,2,3,4,5,6,7,8,9},下列哪個不能表示 a[2][1] 的位址?

  • A &a[2][1]
  • B *(a[2] + 1)
  • C a[2] + 1
  • D *(a + 2) + 1

逐項分析

選項型別值是否為位址
A &a[2][1]int*第 2 列第 1 行元素位址✅ 是
B *(a[2] + 1)int解參考後得到元素值 8❌ 否(這是值)
C a[2] + 1int*第 2 列起始位址偏移 1 個 int → 同 A✅ 是
D *(a + 2) + 1int*a+2 指向第 2 列,解參考得列首位址,+1 同 C✅ 是

核心知識點

  • a 退化為指向首列的指標(int (*)[3])。
  • a[2] 相當於 *(a+2),型別為 int*,指向第 2 列首元素。
  • 指標 + 整數 進行位址運算,單位為所指型別大小(sizeof(int))。
  • *指標 解參考得到值或子陣列首位址。

結論

選項 B 經過解參考(*),得到的是 元素值 而非位址,故為正確答案。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved