C++指針訪問有時我看到在C++中不同陣列的訪問的樣式和以爲可以尋址方式是相對於一個組件:類似於組件
C++:
int * aa=new int[2];
0[aa]=15; //a little different than aa[0]
1[aa]=15;
aa[0]=15;
aa[1]=15;
printf("%d %d \n",aa[0],aa[1]);
組裝:
__asm
{
mov aa[0],ebx
mov aa[1],eax
mov 0[aa],ebx
mov 1[aa],eax
}
這是C++數組訪問表示法的一個標準嗎?如果是,它是從彙編尋址模式派生的嗎?
當我嘗試[aa]1=5;
,編譯器會發出
- 「找不到AA屬性」,
- 「缺少 ';'在「常量」之前「
」左操作數必須是l值「。
//當我嘗試指針運算,
*(AA + 1)= 0 //沒有給出錯誤
*(AA + 0)= 0 //沒有給出錯誤:)
此規則是否與運算符[]重載相同?
MSVC++ 2010
謝謝。
這兩者是無關的 - C早在80x86年前就已經存在了。 –
在真正的C++代碼中,你在哪裏看到類似'0 [aa] = 15'的東西?這是合法的,但大多數人不會使用它,除非他們吸取不是 – jalf