int i = 5;
int* i_pointer = &i;
*&i,&*i_pointer,*&i_pointer 的值各是什麼呢?
*和&是同優先順序運算子,自右至左結合。
&是取位址運算;
*是取位址的本身;
知道了上述內容,就不難知道上面的問題了。
*&i,&i取i位址,*(&i)取位址的本身,那就是等於i本身了。
&*i_pointer,*i_pointer取位址的本身,那就是i了,&(*i_pointer)就等於&i了,也一樣等於i_pointer。
*&i_pointer,&i_pointer取i_pointer位址,*(&i_pointer)取位址的本身,那就等於i_pointer了。
通過下面**證明上述內容
int i = 5;
int* i_pointer = &i;
//i本身
cout << i << endl;
cout << *i_pointer << endl;
cout << *&i << endl;
//i的位址
cout << &i << endl;
cout << i_pointer << endl;
cout << &*i_pointer << endl;
//指標自身位址
cout << &i_pointer << endl;
//指標本身
cout << *&i_pointer << endl;
輸出如下: 55
50022fe6c
0022fe6c
0022fe6c
0022fe60
0022fe6c
C C 中的位運算
位運算的操作物件是整數型別,在運算過程中,整數被看作二進位制的集合,位運算的功能是提供檢查和設定二進位制的功能。位運算遵從左結合律。位求反 左移 右移 位與 位異或 位或 1 左移 把二進位制位向左移位,右側插入0進行補位。2 右移 把二進位制向右移位,如左側物件是無符號位,則插入為0的二進位制。若...
C C 中的位運算
c c 提供了六個位運算操作符,可以對整數進行位運算,下面分別來介紹這六種位運算子。1 按位與 將兩個運算元的每乙個二進位制位進行邏輯與運算。例如 3 5 3 00000011 5 00000101 3 5 00000001 按位與操作有以下兩個特別的用處 將某個運算元的若干位置0 取運算元的若干指...
c c 中 運算子 左結合與右結合
右結合性,就是在表示式中最右邊的操作最先執行,然後從右到左依次執行 左結合性的操作符 如位操作符 和 則是從左至右依次執行 在標準c語言的文件裡,對操作符的結合性並沒有做出非常清楚的解釋。乙個滿分的回答是 它是仲裁者,在幾個操作符具有相同的優先順序時決定先執行哪乙個。每個操作符擁有某一級別的優先順序...